// Generated from SQLiteParser.g4 by ANTLR 4.8
// jshint ignore: start
var antlr4 = require('antlr4/index');
var grammarFileName = "SQLiteParser.g4";


var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
    "\u0003\u00c2\u0801\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004",
    "\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007",
    "\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f",
    "\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010",
    "\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014",
    "\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017",
    "\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b",
    "\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e",
    "\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004\"\t\"\u0004#\t#\u0004",
    "$\t$\u0004%\t%\u0004&\t&\u0004\'\t\'\u0004(\t(\u0004)\t)\u0004*\t*\u0004",
    "+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u00041\t1\u0004",
    "2\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u00048\t8\u0004",
    "9\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004?\t?\u0004",
    "@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004F\tF\u0004",
    "G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004M\tM\u0004",
    "N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004T\tT\u0004",
    "U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004[\t[\u0004",
    "\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004b\tb\u0004",
    "c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004i\ti\u0004",
    "j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004p\tp\u0004",
    "q\tq\u0003\u0002\u0003\u0002\u0007\u0002\u00e5\n\u0002\f\u0002\u000e",
    "\u0002\u00e8\u000b\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003\u0003",
    "\u0003\u0003\u0003\u0004\u0007\u0004\u00f0\n\u0004\f\u0004\u000e\u0004",
    "\u00f3\u000b\u0004\u0003\u0004\u0003\u0004\u0006\u0004\u00f7\n\u0004",
    "\r\u0004\u000e\u0004\u00f8\u0003\u0004\u0007\u0004\u00fc\n\u0004\f\u0004",
    "\u000e\u0004\u00ff\u000b\u0004\u0003\u0004\u0007\u0004\u0102\n\u0004",
    "\f\u0004\u000e\u0004\u0105\u000b\u0004\u0003\u0005\u0003\u0005\u0003",
    "\u0005\u0005\u0005\u010a\n\u0005\u0005\u0005\u010c\n\u0005\u0003\u0005",
    "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
    "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
    "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005",
    "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005",
    "\u0126\n\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003",
    "\u0006\u0005\u0006\u012d\n\u0006\u0003\u0006\u0003\u0006\u0003\u0006",
    "\u0003\u0006\u0003\u0006\u0005\u0006\u0134\n\u0006\u0003\u0006\u0003",
    "\u0006\u0003\u0006\u0003\u0006\u0005\u0006\u013a\n\u0006\u0003\u0006",
    "\u0003\u0006\u0005\u0006\u013e\n\u0006\u0003\u0006\u0005\u0006\u0141",
    "\n\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007",
    "\u0005\u0007\u0148\n\u0007\u0003\u0007\u0005\u0007\u014b\n\u0007\u0003",
    "\b\u0003\b\u0005\b\u014f\n\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\t",
    "\u0003\t\u0005\t\u0157\n\t\u0003\t\u0003\t\u0005\t\u015b\n\t\u0005\t",
    "\u015d\n\t\u0003\n\u0003\n\u0005\n\u0161\n\n\u0003\u000b\u0003\u000b",
    "\u0005\u000b\u0165\n\u000b\u0003\u000b\u0003\u000b\u0005\u000b\u0169",
    "\n\u000b\u0003\u000b\u0005\u000b\u016c\n\u000b\u0003\f\u0003\f\u0003",
    "\f\u0003\r\u0003\r\u0005\r\u0173\n\r\u0003\r\u0003\r\u0003\u000e\u0003",
    "\u000e\u0005\u000e\u0179\n\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
    "\u0003\u000e\u0005\u000e\u017f\n\u000e\u0003\u000e\u0003\u000e\u0003",
    "\u000e\u0005\u000e\u0184\n\u000e\u0003\u000e\u0003\u000e\u0003\u000e",
    "\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0007\u000e\u018d\n",
    "\u000e\f\u000e\u000e\u000e\u0190\u000b\u000e\u0003\u000e\u0003\u000e",
    "\u0003\u000e\u0005\u000e\u0195\n\u000e\u0003\u000f\u0003\u000f\u0005",
    "\u000f\u0199\n\u000f\u0003\u000f\u0003\u000f\u0005\u000f\u019d\n\u000f",
    "\u0003\u000f\u0005\u000f\u01a0\n\u000f\u0003\u0010\u0003\u0010\u0005",
    "\u0010\u01a4\n\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010",
    "\u0005\u0010\u01aa\n\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0005",
    "\u0010\u01af\n\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010",
    "\u0003\u0010\u0007\u0010\u01b6\n\u0010\f\u0010\u000e\u0010\u01b9\u000b",
    "\u0010\u0003\u0010\u0003\u0010\u0007\u0010\u01bd\n\u0010\f\u0010\u000e",
    "\u0010\u01c0\u000b\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0005\u0010",
    "\u01c5\n\u0010\u0003\u0010\u0003\u0010\u0005\u0010\u01c9\n\u0010\u0003",
    "\u0011\u0003\u0011\u0005\u0011\u01cd\n\u0011\u0003\u0011\u0007\u0011",
    "\u01d0\n\u0011\f\u0011\u000e\u0011\u01d3\u000b\u0011\u0003\u0012\u0006",
    "\u0012\u01d6\n\u0012\r\u0012\u000e\u0012\u01d7\u0003\u0012\u0003\u0012",
    "\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012",
    "\u0003\u0012\u0003\u0012\u0005\u0012\u01e4\n\u0012\u0003\u0013\u0003",
    "\u0013\u0005\u0013\u01e8\n\u0013\u0003\u0013\u0003\u0013\u0003\u0013",
    "\u0005\u0013\u01ed\n\u0013\u0003\u0013\u0005\u0013\u01f0\n\u0013\u0003",
    "\u0013\u0005\u0013\u01f3\n\u0013\u0003\u0013\u0003\u0013\u0003\u0013",
    "\u0005\u0013\u01f8\n\u0013\u0003\u0013\u0005\u0013\u01fb\n\u0013\u0003",
    "\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003",
    "\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0005",
    "\u0013\u0209\n\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013",
    "\u0003\u0013\u0005\u0013\u0210\n\u0013\u0003\u0013\u0003\u0013\u0003",
    "\u0013\u0003\u0013\u0003\u0013\u0005\u0013\u0217\n\u0013\u0005\u0013",
    "\u0219\n\u0013\u0003\u0014\u0005\u0014\u021c\n\u0014\u0003\u0014\u0003",
    "\u0014\u0003\u0015\u0003\u0015\u0005\u0015\u0222\n\u0015\u0003\u0015",
    "\u0003\u0015\u0003\u0015\u0005\u0015\u0227\n\u0015\u0003\u0015\u0003",
    "\u0015\u0003\u0015\u0003\u0015\u0007\u0015\u022d\n\u0015\f\u0015\u000e",
    "\u0015\u0230\u000b\u0015\u0003\u0015\u0003\u0015\u0005\u0015\u0234\n",
    "\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003",
    "\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0007",
    "\u0015\u0241\n\u0015\f\u0015\u000e\u0015\u0244\u000b\u0015\u0003\u0015",
    "\u0003\u0015\u0003\u0015\u0005\u0015\u0249\n\u0015\u0003\u0016\u0003",
    "\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0007\u0016\u0251",
    "\n\u0016\f\u0016\u000e\u0016\u0254\u000b\u0016\u0003\u0016\u0003\u0016",
    "\u0005\u0016\u0258\n\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003",
    "\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0005\u0016\u0262",
    "\n\u0016\u0003\u0016\u0003\u0016\u0007\u0016\u0266\n\u0016\f\u0016\u000e",
    "\u0016\u0269\u000b\u0016\u0003\u0016\u0005\u0016\u026c\n\u0016\u0003",
    "\u0016\u0003\u0016\u0003\u0016\u0005\u0016\u0271\n\u0016\u0005\u0016",
    "\u0273\n\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003",
    "\u0018\u0003\u0018\u0005\u0018\u027b\n\u0018\u0003\u0018\u0003\u0018",
    "\u0003\u0018\u0003\u0018\u0005\u0018\u0281\n\u0018\u0003\u0018\u0003",
    "\u0018\u0003\u0018\u0005\u0018\u0286\n\u0018\u0003\u0018\u0003\u0018",
    "\u0003\u0018\u0003\u0018\u0003\u0018\u0005\u0018\u028d\n\u0018\u0003",
    "\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003",
    "\u0018\u0007\u0018\u0296\n\u0018\f\u0018\u000e\u0018\u0299\u000b\u0018",
    "\u0005\u0018\u029b\n\u0018\u0005\u0018\u029d\n\u0018\u0003\u0018\u0003",
    "\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0005\u0018\u02a4\n\u0018",
    "\u0003\u0018\u0003\u0018\u0005\u0018\u02a8\n\u0018\u0003\u0018\u0003",
    "\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0005\u0018\u02af\n\u0018",
    "\u0003\u0018\u0003\u0018\u0006\u0018\u02b3\n\u0018\r\u0018\u000e\u0018",
    "\u02b4\u0003\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0005\u0019\u02bb",
    "\n\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0005\u0019",
    "\u02c1\n\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0005\u0019\u02c6",
    "\n\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019",
    "\u0007\u0019\u02cd\n\u0019\f\u0019\u000e\u0019\u02d0\u000b\u0019\u0003",
    "\u0019\u0003\u0019\u0005\u0019\u02d4\n\u0019\u0003\u0019\u0003\u0019",
    "\u0003\u0019\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a",
    "\u0003\u001a\u0005\u001a\u02df\n\u001a\u0003\u001a\u0003\u001a\u0003",
    "\u001a\u0005\u001a\u02e4\n\u001a\u0003\u001a\u0003\u001a\u0003\u001a",
    "\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0007\u001a\u02ed\n",
    "\u001a\f\u001a\u000e\u001a\u02f0\u000b\u001a\u0003\u001a\u0003\u001a",
    "\u0005\u001a\u02f4\n\u001a\u0003\u001b\u0003\u001b\u0005\u001b\u02f8",
    "\n\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b",
    "\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b",
    "\u0003\u001b\u0007\u001b\u0306\n\u001b\f\u001b\u000e\u001b\u0309\u000b",
    "\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0007",
    "\u001c\u0310\n\u001c\f\u001c\u000e\u001c\u0313\u000b\u001c\u0003\u001c",
    "\u0003\u001c\u0005\u001c\u0317\n\u001c\u0003\u001d\u0003\u001d\u0003",
    "\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0005\u001d\u031f\n\u001d",
    "\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003\u001e",
    "\u0003\u001e\u0003\u001e\u0007\u001e\u0329\n\u001e\f\u001e\u000e\u001e",
    "\u032c\u000b\u001e\u0003\u001e\u0003\u001e\u0005\u001e\u0330\n\u001e",
    "\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001f",
    "\u0005\u001f\u0338\n\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003",
    "\u001f\u0003\u001f\u0005\u001f\u033f\n\u001f\u0003 \u0005 \u0342\n ",
    "\u0003 \u0003 \u0003 \u0003 \u0003 \u0005 \u0349\n \u0003 \u0005 \u034c",
    "\n \u0003 \u0005 \u034f\n \u0003!\u0003!\u0005!\u0353\n!\u0003!\u0003",
    "!\u0003\"\u0003\"\u0003\"\u0003\"\u0005\"\u035b\n\"\u0003\"\u0003\"",
    "\u0003\"\u0005\"\u0360\n\"\u0003\"\u0003\"\u0003#\u0003#\u0003#\u0003",
    "#\u0003#\u0003#\u0005#\u036a\n#\u0003#\u0003#\u0003#\u0005#\u036f\n",
    "#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0005#\u0378\n#\u0003",
    "#\u0003#\u0003#\u0007#\u037d\n#\f#\u000e#\u0380\u000b#\u0003#\u0005",
    "#\u0383\n#\u0003#\u0003#\u0005#\u0387\n#\u0003#\u0005#\u038a\n#\u0003",
    "#\u0003#\u0003#\u0003#\u0007#\u0390\n#\f#\u000e#\u0393\u000b#\u0003",
    "#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0005",
    "#\u039f\n#\u0003#\u0005#\u03a2\n#\u0003#\u0003#\u0003#\u0003#\u0003",
    "#\u0003#\u0005#\u03aa\n#\u0003#\u0003#\u0003#\u0003#\u0003#\u0006#\u03b1",
    "\n#\r#\u000e#\u03b2\u0003#\u0003#\u0005#\u03b7\n#\u0003#\u0003#\u0003",
    "#\u0005#\u03bc\n#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003",
    "#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003",
    "#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003",
    "#\u0005#\u03da\n#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003",
    "#\u0003#\u0003#\u0005#\u03e6\n#\u0003#\u0003#\u0003#\u0005#\u03eb\n",
    "#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003",
    "#\u0005#\u03f7\n#\u0003#\u0003#\u0003#\u0003#\u0005#\u03fd\n#\u0003",
    "#\u0003#\u0003#\u0003#\u0003#\u0005#\u0404\n#\u0003#\u0003#\u0005#\u0408",
    "\n#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0007#\u0410\n#\f#\u000e",
    "#\u0413\u000b#\u0005#\u0415\n#\u0003#\u0003#\u0003#\u0003#\u0005#\u041b",
    "\n#\u0003#\u0003#\u0003#\u0003#\u0005#\u0421\n#\u0003#\u0003#\u0003",
    "#\u0003#\u0003#\u0007#\u0428\n#\f#\u000e#\u042b\u000b#\u0005#\u042d",
    "\n#\u0003#\u0003#\u0005#\u0431\n#\u0007#\u0433\n#\f#\u000e#\u0436\u000b",
    "#\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0005$\u043e\n$\u0003$\u0003",
    "$\u0003%\u0003%\u0003&\u0005&\u0445\n&\u0003&\u0003&\u0003&\u0003&\u0003",
    "&\u0005&\u044c\n&\u0003&\u0003&\u0003&\u0003&\u0005&\u0452\n&\u0003",
    "&\u0003&\u0003&\u0005&\u0457\n&\u0003&\u0003&\u0003&\u0003&\u0007&\u045d",
    "\n&\f&\u000e&\u0460\u000b&\u0003&\u0003&\u0005&\u0464\n&\u0003&\u0003",
    "&\u0003&\u0003&\u0003&\u0007&\u046b\n&\f&\u000e&\u046e\u000b&\u0003",
    "&\u0003&\u0003&\u0003&\u0003&\u0003&\u0007&\u0476\n&\f&\u000e&\u0479",
    "\u000b&\u0003&\u0003&\u0007&\u047d\n&\f&\u000e&\u0480\u000b&\u0003&",
    "\u0005&\u0483\n&\u0003&\u0005&\u0486\n&\u0003&\u0003&\u0005&\u048a\n",
    "&\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0007\'\u0492\n\'",
    "\f\'\u000e\'\u0495\u000b\'\u0003\'\u0003\'\u0003\'\u0005\'\u049a\n\'",
    "\u0005\'\u049c\n\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0005",
    "\'\u04a4\n\'\u0003\'\u0003\'\u0003\'\u0003\'\u0003\'\u0005\'\u04ab\n",
    "\'\u0003\'\u0003\'\u0003\'\u0007\'\u04b0\n\'\f\'\u000e\'\u04b3\u000b",
    "\'\u0003\'\u0003\'\u0005\'\u04b7\n\'\u0005\'\u04b9\n\'\u0003(\u0003",
    "(\u0003(\u0003(\u0005(\u04bf\n(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003",
    "(\u0003(\u0005(\u04c8\n(\u0003)\u0003)\u0003)\u0005)\u04cd\n)\u0003",
    "*\u0003*\u0003*\u0003*\u0003*\u0005*\u04d4\n*\u0003*\u0003*\u0005*\u04d8",
    "\n*\u0005*\u04da\n*\u0003+\u0005+\u04dd\n+\u0003+\u0003+\u0003+\u0003",
    "+\u0007+\u04e3\n+\f+\u000e+\u04e6\u000b+\u0003+\u0005+\u04e9\n+\u0003",
    "+\u0005+\u04ec\n+\u0003,\u0003,\u0003,\u0003,\u0005,\u04f2\n,\u0007",
    ",\u04f4\n,\f,\u000e,\u04f7\u000b,\u0003-\u0003-\u0005-\u04fb\n-\u0003",
    "-\u0003-\u0003-\u0007-\u0500\n-\f-\u000e-\u0503\u000b-\u0003-\u0003",
    "-\u0003-\u0003-\u0007-\u0509\n-\f-\u000e-\u050c\u000b-\u0003-\u0005",
    "-\u050f\n-\u0005-\u0511\n-\u0003-\u0003-\u0005-\u0515\n-\u0003-\u0003",
    "-\u0003-\u0003-\u0003-\u0007-\u051c\n-\f-\u000e-\u051f\u000b-\u0003",
    "-\u0003-\u0005-\u0523\n-\u0005-\u0525\n-\u0003-\u0003-\u0003-\u0003",
    "-\u0003-\u0003-\u0003-\u0003-\u0003-\u0007-\u0530\n-\f-\u000e-\u0533",
    "\u000b-\u0005-\u0535\n-\u0003-\u0003-\u0003-\u0003-\u0003-\u0007-\u053c",
    "\n-\f-\u000e-\u053f\u000b-\u0003-\u0003-\u0003-\u0003-\u0003-\u0003",
    "-\u0007-\u0547\n-\f-\u000e-\u054a\u000b-\u0003-\u0003-\u0007-\u054e",
    "\n-\f-\u000e-\u0551\u000b-\u0005-\u0553\n-\u0003.\u0003.\u0003/\u0005",
    "/\u0558\n/\u0003/\u0003/\u0005/\u055c\n/\u0003/\u0005/\u055f\n/\u0003",
    "0\u00050\u0562\n0\u00030\u00030\u00030\u00050\u0567\n0\u00030\u0003",
    "0\u00050\u056b\n0\u00030\u00060\u056e\n0\r0\u000e0\u056f\u00030\u0005",
    "0\u0573\n0\u00030\u00050\u0576\n0\u00031\u00031\u00031\u00051\u057b",
    "\n1\u00031\u00031\u00051\u057f\n1\u00031\u00051\u0582\n1\u00031\u0003",
    "1\u00031\u00031\u00031\u00051\u0589\n1\u00031\u00031\u00031\u00051\u058e",
    "\n1\u00031\u00031\u00031\u00031\u00031\u00071\u0595\n1\f1\u000e1\u0598",
    "\u000b1\u00031\u00031\u00051\u059c\n1\u00031\u00051\u059f\n1\u00031",
    "\u00031\u00031\u00031\u00071\u05a5\n1\f1\u000e1\u05a8\u000b1\u00031",
    "\u00051\u05ab\n1\u00031\u00031\u00031\u00031\u00031\u00031\u00051\u05b3",
    "\n1\u00031\u00051\u05b6\n1\u00051\u05b8\n1\u00032\u00032\u00032\u0003",
    "2\u00032\u00032\u00032\u00052\u05c1\n2\u00032\u00052\u05c4\n2\u0005",
    "2\u05c6\n2\u00033\u00033\u00053\u05ca\n3\u00033\u00033\u00053\u05ce",
    "\n3\u00033\u00033\u00053\u05d2\n3\u00033\u00053\u05d5\n3\u00034\u0003",
    "4\u00034\u00034\u00034\u00034\u00034\u00074\u05de\n4\f4\u000e4\u05e1",
    "\u000b4\u00034\u00034\u00054\u05e5\n4\u00035\u00035\u00055\u05e9\n5",
    "\u00035\u00035\u00055\u05ed\n5\u00036\u00056\u05f0\n6\u00036\u00036",
    "\u00036\u00056\u05f5\n6\u00036\u00036\u00036\u00036\u00056\u05fb\n6",
    "\u00036\u00036\u00036\u00036\u00036\u00056\u0602\n6\u00036\u00036\u0003",
    "6\u00076\u0607\n6\f6\u000e6\u060a\u000b6\u00036\u00036\u00056\u060e",
    "\n6\u00037\u00037\u00037\u00037\u00077\u0614\n7\f7\u000e7\u0617\u000b",
    "7\u00037\u00037\u00038\u00058\u061c\n8\u00038\u00038\u00038\u00058\u0621",
    "\n8\u00038\u00038\u00038\u00038\u00058\u0627\n8\u00038\u00038\u0003",
    "8\u00038\u00038\u00058\u062e\n8\u00038\u00038\u00038\u00078\u0633\n",
    "8\f8\u000e8\u0636\u000b8\u00038\u00038\u00058\u063a\n8\u00038\u0005",
    "8\u063d\n8\u00038\u00058\u0640\n8\u00039\u00039\u00039\u00059\u0645",
    "\n9\u00039\u00039\u00039\u00059\u064a\n9\u00039\u00039\u00039\u0003",
    "9\u00039\u00059\u0651\n9\u0003:\u0003:\u0005:\u0655\n:\u0003:\u0003",
    ":\u0005:\u0659\n:\u0003;\u0003;\u0003;\u0003;\u0003;\u0003;\u0003<\u0003",
    "<\u0005<\u0663\n<\u0003<\u0003<\u0003<\u0003<\u0003<\u0007<\u066a\n",
    "<\f<\u000e<\u066d\u000b<\u0005<\u066f\n<\u0003<\u0003<\u0003<\u0003",
    "<\u0003<\u0007<\u0676\n<\f<\u000e<\u0679\u000b<\u0003<\u0005<\u067c",
    "\n<\u0003<\u0003<\u0003=\u0003=\u0003=\u0003=\u0005=\u0684\n=\u0003",
    "=\u0003=\u0003=\u0003=\u0003=\u0007=\u068b\n=\f=\u000e=\u068e\u000b",
    "=\u0005=\u0690\n=\u0003=\u0003=\u0003=\u0003=\u0003=\u0007=\u0697\n",
    "=\f=\u000e=\u069a\u000b=\u0005=\u069c\n=\u0003=\u0005=\u069f\n=\u0003",
    "=\u0005=\u06a2\n=\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003",
    ">\u0005>\u06ac\n>\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0005",
    "?\u06b5\n?\u0003@\u0003@\u0003@\u0003@\u0003@\u0007@\u06bc\n@\f@\u000e",
    "@\u06bf\u000b@\u0003@\u0005@\u06c2\n@\u0003@\u0003@\u0003A\u0003A\u0003",
    "A\u0005A\u06c9\nA\u0003A\u0003A\u0003A\u0007A\u06ce\nA\fA\u000eA\u06d1",
    "\u000bA\u0003A\u0005A\u06d4\nA\u0003A\u0003A\u0005A\u06d8\nA\u0003B",
    "\u0003B\u0003B\u0003B\u0003B\u0007B\u06df\nB\fB\u000eB\u06e2\u000bB",
    "\u0003B\u0005B\u06e5\nB\u0003B\u0003B\u0005B\u06e9\nB\u0003B\u0003B",
    "\u0003B\u0005B\u06ee\nB\u0003C\u0003C\u0005C\u06f2\nC\u0003C\u0003C",
    "\u0003C\u0007C\u06f7\nC\fC\u000eC\u06fa\u000bC\u0003D\u0003D\u0003D",
    "\u0003D\u0003D\u0007D\u0701\nD\fD\u000eD\u0704\u000bD\u0003E\u0003E",
    "\u0003E\u0003E\u0005E\u070a\nE\u0003F\u0003F\u0003F\u0005F\u070f\nF",
    "\u0003F\u0005F\u0712\nF\u0003F\u0003F\u0005F\u0716\nF\u0003G\u0003G",
    "\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003",
    "H\u0005H\u0724\nH\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003",
    "I\u0003I\u0003I\u0005I\u0730\nI\u0003J\u0003J\u0003J\u0003J\u0003J\u0003",
    "J\u0003J\u0005J\u0739\nJ\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003",
    "K\u0005K\u0742\nK\u0003K\u0003K\u0005K\u0746\nK\u0003K\u0003K\u0003",
    "K\u0003K\u0003K\u0003K\u0003K\u0003K\u0005K\u0750\nK\u0003K\u0005K\u0753",
    "\nK\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0005K\u075c\n",
    "K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0005K\u0765\nK\u0003",
    "K\u0005K\u0768\nK\u0003K\u0003K\u0003K\u0003K\u0005K\u076e\nK\u0003",
    "K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003",
    "K\u0003K\u0005K\u077c\nK\u0003K\u0003K\u0005K\u0780\nK\u0003K\u0003",
    "K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0005K\u078b\nK\u0003",
    "K\u0003K\u0003K\u0005K\u0790\nK\u0003L\u0003L\u0003L\u0003M\u0003M\u0003",
    "M\u0003N\u0003N\u0003N\u0006N\u079b\nN\rN\u000eN\u079c\u0003O\u0003",
    "O\u0003O\u0006O\u07a2\nO\rO\u000eO\u07a3\u0003P\u0003P\u0003P\u0003",
    "P\u0003Q\u0003Q\u0005Q\u07ac\nQ\u0003Q\u0003Q\u0003Q\u0005Q\u07b1\n",
    "Q\u0007Q\u07b3\nQ\fQ\u000eQ\u07b6\u000bQ\u0003R\u0003R\u0003S\u0003",
    "S\u0003T\u0003T\u0003U\u0003U\u0003V\u0003V\u0005V\u07c2\nV\u0003W\u0003",
    "W\u0003X\u0003X\u0003Y\u0003Y\u0003Z\u0003Z\u0003[\u0003[\u0003\\\u0003",
    "\\\u0003]\u0003]\u0003^\u0003^\u0003_\u0003_\u0003`\u0003`\u0003a\u0003",
    "a\u0003b\u0003b\u0003c\u0003c\u0003d\u0003d\u0003e\u0003e\u0003f\u0003",
    "f\u0003g\u0003g\u0003h\u0003h\u0003i\u0003i\u0003j\u0003j\u0003k\u0003",
    "k\u0003l\u0003l\u0003m\u0003m\u0003n\u0003n\u0003o\u0003o\u0003p\u0003",
    "p\u0003q\u0003q\u0003q\u0003q\u0003q\u0003q\u0003q\u0005q\u07ff\nq\u0003",
    "q\u0002\u0003Dr\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016",
    "\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnp",
    "rtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092",
    "\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa",
    "\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2",
    "\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da",
    "\u00dc\u00de\u00e0\u0002\u001e\u0005\u0002<<GGTT\u0004\u000211DD\u0003",
    "\u0002\u0086\u0087\u0004\u0002\u0093\u0093\u00ac\u00ac\u0003\u0002\n",
    "\u000b\u0004\u0002==\u008e\u008e\u0004\u0002::jj\u0004\u0002<<TT\u0007",
    "\u0002\u001b\u001bJJSS||\u007f\u007f\u0006\u0002VV\u0085\u0085\u008b",
    "\u008b\u0092\u0092\u0004\u0002\t\t\u000e\u000f\u0003\u0002\u0010\u0013",
    "\u0003\u0002\u0014\u0017\u0006\u0002OOcceexx\u0005\u0002\u001b\u001b",
    "JJ\u007f\u007f\u0007\u000268jj\u00ad\u00ae\u00bb\u00bb\u00bd\u00be\u0004",
    "\u0002\u001f\u001f@@\u0005\u0002\u0081\u0081\u009b\u009b\u00b4\u00b4",
    "\u0004\u0002\u0007\u0007ll\u0003\u0002\u00b1\u00b2\u0004\u0002$$>>\u0004",
    "\u0002\u0098\u0098\u00a3\u00a3\u0004\u0002\u00a0\u00a0\u00a7\u00a7\u0004",
    "\u0002\u00a1\u00a1\u00a8\u00a9\u0004\u0002\u00a2\u00a2\u00a4\u00a4\u0004",
    "\u0002\n\fhh\u0004\u0002\u00ba\u00ba\u00bd\u00bd\u0003\u0002\u001b\u00b5",
    "\u0002\u0915\u0002\u00e6\u0003\u0002\u0002\u0002\u0004\u00eb\u0003\u0002",
    "\u0002\u0002\u0006\u00f1\u0003\u0002\u0002\u0002\b\u010b\u0003\u0002",
    "\u0002\u0002\n\u0127\u0003\u0002\u0002\u0002\f\u0142\u0003\u0002\u0002",
    "\u0002\u000e\u014c\u0003\u0002\u0002\u0002\u0010\u0154\u0003\u0002\u0002",
    "\u0002\u0012\u015e\u0003\u0002\u0002\u0002\u0014\u0162\u0003\u0002\u0002",
    "\u0002\u0016\u016d\u0003\u0002\u0002\u0002\u0018\u0170\u0003\u0002\u0002",
    "\u0002\u001a\u0176\u0003\u0002\u0002\u0002\u001c\u0198\u0003\u0002\u0002",
    "\u0002\u001e\u01a1\u0003\u0002\u0002\u0002 \u01ca\u0003\u0002\u0002",
    "\u0002\"\u01d5\u0003\u0002\u0002\u0002$\u01e7\u0003\u0002\u0002\u0002",
    "&\u021b\u0003\u0002\u0002\u0002(\u0221\u0003\u0002\u0002\u0002*\u024a",
    "\u0003\u0002\u0002\u0002,\u0274\u0003\u0002\u0002\u0002.\u0278\u0003",
    "\u0002\u0002\u00020\u02b8\u0003\u0002\u0002\u00022\u02d8\u0003\u0002",
    "\u0002\u00024\u02f5\u0003\u0002\u0002\u00026\u030a\u0003\u0002\u0002",
    "\u00028\u0318\u0003\u0002\u0002\u0002:\u0323\u0003\u0002\u0002\u0002",
    "<\u0337\u0003\u0002\u0002\u0002>\u0341\u0003\u0002\u0002\u0002@\u0350",
    "\u0003\u0002\u0002\u0002B\u0356\u0003\u0002\u0002\u0002D\u03bb\u0003",
    "\u0002\u0002\u0002F\u0437\u0003\u0002\u0002\u0002H\u0441\u0003\u0002",
    "\u0002\u0002J\u0489\u0003\u0002\u0002\u0002L\u048b\u0003\u0002\u0002",
    "\u0002N\u04ba\u0003\u0002\u0002\u0002P\u04cc\u0003\u0002\u0002\u0002",
    "R\u04ce\u0003\u0002\u0002\u0002T\u04dc\u0003\u0002\u0002\u0002V\u04ed",
    "\u0003\u0002\u0002\u0002X\u0552\u0003\u0002\u0002\u0002Z\u0554\u0003",
    "\u0002\u0002\u0002\\\u0557\u0003\u0002\u0002\u0002^\u0561\u0003\u0002",
    "\u0002\u0002`\u05b7\u0003\u0002\u0002\u0002b\u05c5\u0003\u0002\u0002",
    "\u0002d\u05d4\u0003\u0002\u0002\u0002f\u05e4\u0003\u0002\u0002\u0002",
    "h\u05ec\u0003\u0002\u0002\u0002j\u05ef\u0003\u0002\u0002\u0002l\u060f",
    "\u0003\u0002\u0002\u0002n\u061b\u0003\u0002\u0002\u0002p\u0644\u0003",
    "\u0002\u0002\u0002r\u0652\u0003\u0002\u0002\u0002t\u065a\u0003\u0002",
    "\u0002\u0002v\u0660\u0003\u0002\u0002\u0002x\u067f\u0003\u0002\u0002",
    "\u0002z\u06a3\u0003\u0002\u0002\u0002|\u06ad\u0003\u0002\u0002\u0002",
    "~\u06b6\u0003\u0002\u0002\u0002\u0080\u06c5\u0003\u0002\u0002\u0002",
    "\u0082\u06d9\u0003\u0002\u0002\u0002\u0084\u06ef\u0003\u0002\u0002\u0002",
    "\u0086\u06fb\u0003\u0002\u0002\u0002\u0088\u0705\u0003\u0002\u0002\u0002",
    "\u008a\u070b\u0003\u0002\u0002\u0002\u008c\u0717\u0003\u0002\u0002\u0002",
    "\u008e\u0723\u0003\u0002\u0002\u0002\u0090\u072f\u0003\u0002\u0002\u0002",
    "\u0092\u0738\u0003\u0002\u0002\u0002\u0094\u078f\u0003\u0002\u0002\u0002",
    "\u0096\u0791\u0003\u0002\u0002\u0002\u0098\u0794\u0003\u0002\u0002\u0002",
    "\u009a\u0797\u0003\u0002\u0002\u0002\u009c\u079e\u0003\u0002\u0002\u0002",
    "\u009e\u07a5\u0003\u0002\u0002\u0002\u00a0\u07a9\u0003\u0002\u0002\u0002",
    "\u00a2\u07b7\u0003\u0002\u0002\u0002\u00a4\u07b9\u0003\u0002\u0002\u0002",
    "\u00a6\u07bb\u0003\u0002\u0002\u0002\u00a8\u07bd\u0003\u0002\u0002\u0002",
    "\u00aa\u07c1\u0003\u0002\u0002\u0002\u00ac\u07c3\u0003\u0002\u0002\u0002",
    "\u00ae\u07c5\u0003\u0002\u0002\u0002\u00b0\u07c7\u0003\u0002\u0002\u0002",
    "\u00b2\u07c9\u0003\u0002\u0002\u0002\u00b4\u07cb\u0003\u0002\u0002\u0002",
    "\u00b6\u07cd\u0003\u0002\u0002\u0002\u00b8\u07cf\u0003\u0002\u0002\u0002",
    "\u00ba\u07d1\u0003\u0002\u0002\u0002\u00bc\u07d3\u0003\u0002\u0002\u0002",
    "\u00be\u07d5\u0003\u0002\u0002\u0002\u00c0\u07d7\u0003\u0002\u0002\u0002",
    "\u00c2\u07d9\u0003\u0002\u0002\u0002\u00c4\u07db\u0003\u0002\u0002\u0002",
    "\u00c6\u07dd\u0003\u0002\u0002\u0002\u00c8\u07df\u0003\u0002\u0002\u0002",
    "\u00ca\u07e1\u0003\u0002\u0002\u0002\u00cc\u07e3\u0003\u0002\u0002\u0002",
    "\u00ce\u07e5\u0003\u0002\u0002\u0002\u00d0\u07e7\u0003\u0002\u0002\u0002",
    "\u00d2\u07e9\u0003\u0002\u0002\u0002\u00d4\u07eb\u0003\u0002\u0002\u0002",
    "\u00d6\u07ed\u0003\u0002\u0002\u0002\u00d8\u07ef\u0003\u0002\u0002\u0002",
    "\u00da\u07f1\u0003\u0002\u0002\u0002\u00dc\u07f3\u0003\u0002\u0002\u0002",
    "\u00de\u07f5\u0003\u0002\u0002\u0002\u00e0\u07fe\u0003\u0002\u0002\u0002",
    "\u00e2\u00e5\u0005\u0006\u0004\u0002\u00e3\u00e5\u0005\u0004\u0003\u0002",
    "\u00e4\u00e2\u0003\u0002\u0002\u0002\u00e4\u00e3\u0003\u0002\u0002\u0002",
    "\u00e5\u00e8\u0003\u0002\u0002\u0002\u00e6\u00e4\u0003\u0002\u0002\u0002",
    "\u00e6\u00e7\u0003\u0002\u0002\u0002\u00e7\u00e9\u0003\u0002\u0002\u0002",
    "\u00e8\u00e6\u0003\u0002\u0002\u0002\u00e9\u00ea\u0007\u0002\u0002\u0003",
    "\u00ea\u0003\u0003\u0002\u0002\u0002\u00eb\u00ec\u0007\u00c2\u0002\u0002",
    "\u00ec\u00ed\b\u0003\u0001\u0002\u00ed\u0005\u0003\u0002\u0002\u0002",
    "\u00ee\u00f0\u0007\u0003\u0002\u0002\u00ef\u00ee\u0003\u0002\u0002\u0002",
    "\u00f0\u00f3\u0003\u0002\u0002\u0002\u00f1\u00ef\u0003\u0002\u0002\u0002",
    "\u00f1\u00f2\u0003\u0002\u0002\u0002\u00f2\u00f4\u0003\u0002\u0002\u0002",
    "\u00f3\u00f1\u0003\u0002\u0002\u0002\u00f4\u00fd\u0005\b\u0005\u0002",
    "\u00f5\u00f7\u0007\u0003\u0002\u0002\u00f6\u00f5\u0003\u0002\u0002\u0002",
    "\u00f7\u00f8\u0003\u0002\u0002\u0002\u00f8\u00f6\u0003\u0002\u0002\u0002",
    "\u00f8\u00f9\u0003\u0002\u0002\u0002\u00f9\u00fa\u0003\u0002\u0002\u0002",
    "\u00fa\u00fc\u0005\b\u0005\u0002\u00fb\u00f6\u0003\u0002\u0002\u0002",
    "\u00fc\u00ff\u0003\u0002\u0002\u0002\u00fd\u00fb\u0003\u0002\u0002\u0002",
    "\u00fd\u00fe\u0003\u0002\u0002\u0002\u00fe\u0103\u0003\u0002\u0002\u0002",
    "\u00ff\u00fd\u0003\u0002\u0002\u0002\u0100\u0102\u0007\u0003\u0002\u0002",
    "\u0101\u0100\u0003\u0002\u0002\u0002\u0102\u0105\u0003\u0002\u0002\u0002",
    "\u0103\u0101\u0003\u0002\u0002\u0002\u0103\u0104\u0003\u0002\u0002\u0002",
    "\u0104\u0007\u0003\u0002\u0002\u0002\u0105\u0103\u0003\u0002\u0002\u0002",
    "\u0106\u0109\u0007I\u0002\u0002\u0107\u0108\u0007t\u0002\u0002\u0108",
    "\u010a\u0007q\u0002\u0002\u0109\u0107\u0003\u0002\u0002\u0002\u0109",
    "\u010a\u0003\u0002\u0002\u0002\u010a\u010c\u0003\u0002\u0002\u0002\u010b",
    "\u0106\u0003\u0002\u0002\u0002\u010b\u010c\u0003\u0002\u0002\u0002\u010c",
    "\u0125\u0003\u0002\u0002\u0002\u010d\u0126\u0005\n\u0006\u0002\u010e",
    "\u0126\u0005\f\u0007\u0002\u010f\u0126\u0005\u000e\b\u0002\u0110\u0126",
    "\u0005\u0010\t\u0002\u0111\u0126\u0005\u0012\n\u0002\u0112\u0126\u0005",
    "\u001a\u000e\u0002\u0113\u0126\u0005\u001e\u0010\u0002\u0114\u0126\u0005",
    ".\u0018\u0002\u0115\u0126\u00050\u0019\u0002\u0116\u0126\u00052\u001a",
    "\u0002\u0117\u0126\u0005<\u001f\u0002\u0118\u0126\u0005> \u0002\u0119",
    "\u0126\u0005@!\u0002\u011a\u0126\u0005B\"\u0002\u011b\u0126\u0005J&",
    "\u0002\u011c\u0126\u0005N(\u0002\u011d\u0126\u0005R*\u0002\u011e\u0126",
    "\u0005\u0018\r\u0002\u011f\u0126\u0005\u0014\u000b\u0002\u0120\u0126",
    "\u0005\u0016\f\u0002\u0121\u0126\u0005T+\u0002\u0122\u0126\u0005j6\u0002",
    "\u0123\u0126\u0005n8\u0002\u0124\u0126\u0005r:\u0002\u0125\u010d\u0003",
    "\u0002\u0002\u0002\u0125\u010e\u0003\u0002\u0002\u0002\u0125\u010f\u0003",
    "\u0002\u0002\u0002\u0125\u0110\u0003\u0002\u0002\u0002\u0125\u0111\u0003",
    "\u0002\u0002\u0002\u0125\u0112\u0003\u0002\u0002\u0002\u0125\u0113\u0003",
    "\u0002\u0002\u0002\u0125\u0114\u0003\u0002\u0002\u0002\u0125\u0115\u0003",
    "\u0002\u0002\u0002\u0125\u0116\u0003\u0002\u0002\u0002\u0125\u0117\u0003",
    "\u0002\u0002\u0002\u0125\u0118\u0003\u0002\u0002\u0002\u0125\u0119\u0003",
    "\u0002\u0002\u0002\u0125\u011a\u0003\u0002\u0002\u0002\u0125\u011b\u0003",
    "\u0002\u0002\u0002\u0125\u011c\u0003\u0002\u0002\u0002\u0125\u011d\u0003",
    "\u0002\u0002\u0002\u0125\u011e\u0003\u0002\u0002\u0002\u0125\u011f\u0003",
    "\u0002\u0002\u0002\u0125\u0120\u0003\u0002\u0002\u0002\u0125\u0121\u0003",
    "\u0002\u0002\u0002\u0125\u0122\u0003\u0002\u0002\u0002\u0125\u0123\u0003",
    "\u0002\u0002\u0002\u0125\u0124\u0003\u0002\u0002\u0002\u0126\t\u0003",
    "\u0002\u0002\u0002\u0127\u0128\u0007 \u0002\u0002\u0128\u012c\u0007",
    "\u0085\u0002\u0002\u0129\u012a\u0005\u00b4[\u0002\u012a\u012b\u0007",
    "\u0004\u0002\u0002\u012b\u012d\u0003\u0002\u0002\u0002\u012c\u0129\u0003",
    "\u0002\u0002\u0002\u012c\u012d\u0003\u0002\u0002\u0002\u012d\u012e\u0003",
    "\u0002\u0002\u0002\u012e\u0140\u0005\u00b6\\\u0002\u012f\u0139\u0007",
    "{\u0002\u0002\u0130\u0131\u0007\u0089\u0002\u0002\u0131\u013a\u0005",
    "\u00ba^\u0002\u0132\u0134\u00070\u0002\u0002\u0133\u0132\u0003\u0002",
    "\u0002\u0002\u0133\u0134\u0003\u0002\u0002\u0002\u0134\u0135\u0003\u0002",
    "\u0002\u0002\u0135\u0136\u0005\u00bc_\u0002\u0136\u0137\u0007\u0089",
    "\u0002\u0002\u0137\u0138\u0005\u00bc_\u0002\u0138\u013a\u0003\u0002",
    "\u0002\u0002\u0139\u0130\u0003\u0002\u0002\u0002\u0139\u0133\u0003\u0002",
    "\u0002\u0002\u013a\u0141\u0003\u0002\u0002\u0002\u013b\u013d\u0007\u001d",
    "\u0002\u0002\u013c\u013e\u00070\u0002\u0002\u013d\u013c\u0003\u0002",
    "\u0002\u0002\u013d\u013e\u0003\u0002\u0002\u0002\u013e\u013f\u0003\u0002",
    "\u0002\u0002\u013f\u0141\u0005 \u0011\u0002\u0140\u012f\u0003\u0002",
    "\u0002\u0002\u0140\u013b\u0003\u0002\u0002\u0002\u0141\u000b\u0003\u0002",
    "\u0002\u0002\u0142\u014a\u0007!\u0002\u0002\u0143\u014b\u0005\u00b4",
    "[\u0002\u0144\u0145\u0005\u00b4[\u0002\u0145\u0146\u0007\u0004\u0002",
    "\u0002\u0146\u0148\u0003\u0002\u0002\u0002\u0147\u0144\u0003\u0002\u0002",
    "\u0002\u0147\u0148\u0003\u0002\u0002\u0002\u0148\u0149\u0003\u0002\u0002",
    "\u0002\u0149\u014b\u0005\u00b8]\u0002\u014a\u0143\u0003\u0002\u0002",
    "\u0002\u014a\u0147\u0003\u0002\u0002\u0002\u014a\u014b\u0003\u0002\u0002",
    "\u0002\u014b\r\u0003\u0002\u0002\u0002\u014c\u014e\u0007%\u0002\u0002",
    "\u014d\u014f\u00079\u0002\u0002\u014e\u014d\u0003\u0002\u0002\u0002",
    "\u014e\u014f\u0003\u0002\u0002\u0002\u014f\u0150\u0003\u0002\u0002\u0002",
    "\u0150\u0151\u0005D#\u0002\u0151\u0152\u0007#\u0002\u0002\u0152\u0153",
    "\u0005\u00b4[\u0002\u0153\u000f\u0003\u0002\u0002\u0002\u0154\u0156",
    "\u0007(\u0002\u0002\u0155\u0157\t\u0002\u0002\u0002\u0156\u0155\u0003",
    "\u0002\u0002\u0002\u0156\u0157\u0003\u0002\u0002\u0002\u0157\u015c\u0003",
    "\u0002\u0002\u0002\u0158\u015a\u0007\u008a\u0002\u0002\u0159\u015b\u0005",
    "\u00d0i\u0002\u015a\u0159\u0003\u0002\u0002\u0002\u015a\u015b\u0003",
    "\u0002\u0002\u0002\u015b\u015d\u0003\u0002\u0002\u0002\u015c\u0158\u0003",
    "\u0002\u0002\u0002\u015c\u015d\u0003\u0002\u0002\u0002\u015d\u0011\u0003",
    "\u0002\u0002\u0002\u015e\u0160\t\u0003\u0002\u0002\u015f\u0161\u0007",
    "\u008a\u0002\u0002\u0160\u015f\u0003\u0002\u0002\u0002\u0160\u0161\u0003",
    "\u0002\u0002\u0002\u0161\u0013\u0003\u0002\u0002\u0002\u0162\u0164\u0007",
    "\u007f\u0002\u0002\u0163\u0165\u0007\u008a\u0002\u0002\u0164\u0163\u0003",
    "\u0002\u0002\u0002\u0164\u0165\u0003\u0002\u0002\u0002\u0165\u016b\u0003",
    "\u0002\u0002\u0002\u0166\u0168\u0007\u0089\u0002\u0002\u0167\u0169\u0007",
    "\u0082\u0002\u0002\u0168\u0167\u0003\u0002\u0002\u0002\u0168\u0169\u0003",
    "\u0002\u0002\u0002\u0169\u016a\u0003\u0002\u0002\u0002\u016a\u016c\u0005",
    "\u00ccg\u0002\u016b\u0166\u0003\u0002\u0002\u0002\u016b\u016c\u0003",
    "\u0002\u0002\u0002\u016c\u0015\u0003\u0002\u0002\u0002\u016d\u016e\u0007",
    "\u0082\u0002\u0002\u016e\u016f\u0005\u00ccg\u0002\u016f\u0017\u0003",
    "\u0002\u0002\u0002\u0170\u0172\u0007z\u0002\u0002\u0171\u0173\u0007",
    "\u0082\u0002\u0002\u0172\u0171\u0003\u0002\u0002\u0002\u0172\u0173\u0003",
    "\u0002\u0002\u0002\u0173\u0174\u0003\u0002\u0002\u0002\u0174\u0175\u0005",
    "\u00ccg\u0002\u0175\u0019\u0003\u0002\u0002\u0002\u0176\u0178\u0007",
    "4\u0002\u0002\u0177\u0179\u0007\u008d\u0002\u0002\u0178\u0177\u0003",
    "\u0002\u0002\u0002\u0178\u0179\u0003\u0002\u0002\u0002\u0179\u017a\u0003",
    "\u0002\u0002\u0002\u017a\u017e\u0007V\u0002\u0002\u017b\u017c\u0007",
    "R\u0002\u0002\u017c\u017d\u0007h\u0002\u0002\u017d\u017f\u0007H\u0002",
    "\u0002\u017e\u017b\u0003\u0002\u0002\u0002\u017e\u017f\u0003\u0002\u0002",
    "\u0002\u017f\u0183\u0003\u0002\u0002\u0002\u0180\u0181\u0005\u00b4[",
    "\u0002\u0181\u0182\u0007\u0004\u0002\u0002\u0182\u0184\u0003\u0002\u0002",
    "\u0002\u0183\u0180\u0003\u0002\u0002\u0002\u0183\u0184\u0003\u0002\u0002",
    "\u0002\u0184\u0185\u0003\u0002\u0002\u0002\u0185\u0186\u0005\u00c2b",
    "\u0002\u0186\u0187\u0007m\u0002\u0002\u0187\u0188\u0005\u00b6\\\u0002",
    "\u0188\u0189\u0007\u0005\u0002\u0002\u0189\u018e\u0005\u001c\u000f\u0002",
    "\u018a\u018b\u0007\u0007\u0002\u0002\u018b\u018d\u0005\u001c\u000f\u0002",
    "\u018c\u018a\u0003\u0002\u0002\u0002\u018d\u0190\u0003\u0002\u0002\u0002",
    "\u018e\u018c\u0003\u0002\u0002\u0002\u018e\u018f\u0003\u0002\u0002\u0002",
    "\u018f\u0191\u0003\u0002\u0002\u0002\u0190\u018e\u0003\u0002\u0002\u0002",
    "\u0191\u0194\u0007\u0006\u0002\u0002\u0192\u0193\u0007\u0095\u0002\u0002",
    "\u0193\u0195\u0005D#\u0002\u0194\u0192\u0003\u0002\u0002\u0002\u0194",
    "\u0195\u0003\u0002\u0002\u0002\u0195\u001b\u0003\u0002\u0002\u0002\u0196",
    "\u0199\u0005\u00bc_\u0002\u0197\u0199\u0005D#\u0002\u0198\u0196\u0003",
    "\u0002\u0002\u0002\u0198\u0197\u0003\u0002\u0002\u0002\u0199\u019c\u0003",
    "\u0002\u0002\u0002\u019a\u019b\u0007/\u0002\u0002\u019b\u019d\u0005",
    "\u00be`\u0002\u019c\u019a\u0003\u0002\u0002\u0002\u019c\u019d\u0003",
    "\u0002\u0002\u0002\u019d\u019f\u0003\u0002\u0002\u0002\u019e\u01a0\u0005",
    "\u008cG\u0002\u019f\u019e\u0003\u0002\u0002\u0002\u019f\u01a0\u0003",
    "\u0002\u0002\u0002\u01a0\u001d\u0003\u0002\u0002\u0002\u01a1\u01a3\u0007",
    "4\u0002\u0002\u01a2\u01a4\t\u0004\u0002\u0002\u01a3\u01a2\u0003\u0002",
    "\u0002\u0002\u01a3\u01a4\u0003\u0002\u0002\u0002\u01a4\u01a5\u0003\u0002",
    "\u0002\u0002\u01a5\u01a9\u0007\u0085\u0002\u0002\u01a6\u01a7\u0007R",
    "\u0002\u0002\u01a7\u01a8\u0007h\u0002\u0002\u01a8\u01aa\u0007H\u0002",
    "\u0002\u01a9\u01a6\u0003\u0002\u0002\u0002\u01a9\u01aa\u0003\u0002\u0002",
    "\u0002\u01aa\u01ae\u0003\u0002\u0002\u0002\u01ab\u01ac\u0005\u00b4[",
    "\u0002\u01ac\u01ad\u0007\u0004\u0002\u0002\u01ad\u01af\u0003\u0002\u0002",
    "\u0002\u01ae\u01ab\u0003\u0002\u0002\u0002\u01ae\u01af\u0003\u0002\u0002",
    "\u0002\u01af\u01b0\u0003\u0002\u0002\u0002\u01b0\u01c8\u0005\u00b6\\",
    "\u0002\u01b1\u01b2\u0007\u0005\u0002\u0002\u01b2\u01b7\u0005 \u0011",
    "\u0002\u01b3\u01b4\u0007\u0007\u0002\u0002\u01b4\u01b6\u0005 \u0011",
    "\u0002\u01b5\u01b3\u0003\u0002\u0002\u0002\u01b6\u01b9\u0003\u0002\u0002",
    "\u0002\u01b7\u01b5\u0003\u0002\u0002\u0002\u01b7\u01b8\u0003\u0002\u0002",
    "\u0002\u01b8\u01be\u0003\u0002\u0002\u0002\u01b9\u01b7\u0003\u0002\u0002",
    "\u0002\u01ba\u01bb\u0007\u0007\u0002\u0002\u01bb\u01bd\u0005(\u0015",
    "\u0002\u01bc\u01ba\u0003\u0002\u0002\u0002\u01bd\u01c0\u0003\u0002\u0002",
    "\u0002\u01be\u01bc\u0003\u0002\u0002\u0002\u01be\u01bf\u0003\u0002\u0002",
    "\u0002\u01bf\u01c1\u0003\u0002\u0002\u0002\u01c0\u01be\u0003\u0002\u0002",
    "\u0002\u01c1\u01c4\u0007\u0006\u0002\u0002\u01c2\u01c3\u0007\u0097\u0002",
    "\u0002\u01c3\u01c5\u0007\u00ba\u0002\u0002\u01c4\u01c2\u0003\u0002\u0002",
    "\u0002\u01c4\u01c5\u0003\u0002\u0002\u0002\u01c5\u01c9\u0003\u0002\u0002",
    "\u0002\u01c6\u01c7\u0007#\u0002\u0002\u01c7\u01c9\u0005T+\u0002\u01c8",
    "\u01b1\u0003\u0002\u0002\u0002\u01c8\u01c6\u0003\u0002\u0002\u0002\u01c9",
    "\u001f\u0003\u0002\u0002\u0002\u01ca\u01cc\u0005\u00bc_\u0002\u01cb",
    "\u01cd\u0005\"\u0012\u0002\u01cc\u01cb\u0003\u0002\u0002\u0002\u01cc",
    "\u01cd\u0003\u0002\u0002\u0002\u01cd\u01d1\u0003\u0002\u0002\u0002\u01ce",
    "\u01d0\u0005$\u0013\u0002\u01cf\u01ce\u0003\u0002\u0002\u0002\u01d0",
    "\u01d3\u0003\u0002\u0002\u0002\u01d1\u01cf\u0003\u0002\u0002\u0002\u01d1",
    "\u01d2\u0003\u0002\u0002\u0002\u01d2!\u0003\u0002\u0002\u0002\u01d3",
    "\u01d1\u0003\u0002\u0002\u0002\u01d4\u01d6\u0005\u00b0Y\u0002\u01d5",
    "\u01d4\u0003\u0002\u0002\u0002\u01d6\u01d7\u0003\u0002\u0002\u0002\u01d7",
    "\u01d5\u0003\u0002\u0002\u0002\u01d7\u01d8\u0003\u0002\u0002\u0002\u01d8",
    "\u01e3\u0003\u0002\u0002\u0002\u01d9\u01da\u0007\u0005\u0002\u0002\u01da",
    "\u01db\u0005&\u0014\u0002\u01db\u01dc\u0007\u0006\u0002\u0002\u01dc",
    "\u01e4\u0003\u0002\u0002\u0002\u01dd\u01de\u0007\u0005\u0002\u0002\u01de",
    "\u01df\u0005&\u0014\u0002\u01df\u01e0\u0007\u0007\u0002\u0002\u01e0",
    "\u01e1\u0005&\u0014\u0002\u01e1\u01e2\u0007\u0006\u0002\u0002\u01e2",
    "\u01e4\u0003\u0002\u0002\u0002\u01e3\u01d9\u0003\u0002\u0002\u0002\u01e3",
    "\u01dd\u0003\u0002\u0002\u0002\u01e3\u01e4\u0003\u0002\u0002\u0002\u01e4",
    "#\u0003\u0002\u0002\u0002\u01e5\u01e6\u00073\u0002\u0002\u01e6\u01e8",
    "\u0005\u00b0Y\u0002\u01e7\u01e5\u0003\u0002\u0002\u0002\u01e7\u01e8",
    "\u0003\u0002\u0002\u0002\u01e8\u0218\u0003\u0002\u0002\u0002\u01e9\u01ea",
    "\u0007s\u0002\u0002\u01ea\u01ec\u0007a\u0002\u0002\u01eb\u01ed\u0005",
    "\u008cG\u0002\u01ec\u01eb\u0003\u0002\u0002\u0002\u01ec\u01ed\u0003",
    "\u0002\u0002\u0002\u01ed\u01ef\u0003\u0002\u0002\u0002\u01ee\u01f0\u0005",
    ",\u0017\u0002\u01ef\u01ee\u0003\u0002\u0002\u0002\u01ef\u01f0\u0003",
    "\u0002\u0002\u0002\u01f0\u01f2\u0003\u0002\u0002\u0002\u01f1\u01f3\u0007",
    "&\u0002\u0002\u01f2\u01f1\u0003\u0002\u0002\u0002\u01f2\u01f3\u0003",
    "\u0002\u0002\u0002\u01f3\u0219\u0003\u0002\u0002\u0002\u01f4\u01f5\u0007",
    "h\u0002\u0002\u01f5\u01f8\u0007j\u0002\u0002\u01f6\u01f8\u0007\u008d",
    "\u0002\u0002\u01f7\u01f4\u0003\u0002\u0002\u0002\u01f7\u01f6\u0003\u0002",
    "\u0002\u0002\u01f8\u01fa\u0003\u0002\u0002\u0002\u01f9\u01fb\u0005,",
    "\u0017\u0002\u01fa\u01f9\u0003\u0002\u0002\u0002\u01fa\u01fb\u0003\u0002",
    "\u0002\u0002\u01fb\u0219\u0003\u0002\u0002\u0002\u01fc\u01fd\u0007.",
    "\u0002\u0002\u01fd\u01fe\u0007\u0005\u0002\u0002\u01fe\u01ff\u0005D",
    "#\u0002\u01ff\u0200\u0007\u0006\u0002\u0002\u0200\u0219\u0003\u0002",
    "\u0002\u0002\u0201\u0208\u0007:\u0002\u0002\u0202\u0209\u0005&\u0014",
    "\u0002\u0203\u0209\u0005H%\u0002\u0204\u0205\u0007\u0005\u0002\u0002",
    "\u0205\u0206\u0005D#\u0002\u0206\u0207\u0007\u0006\u0002\u0002\u0207",
    "\u0209\u0003\u0002\u0002\u0002\u0208\u0202\u0003\u0002\u0002\u0002\u0208",
    "\u0203\u0003\u0002\u0002\u0002\u0208\u0204\u0003\u0002\u0002\u0002\u0209",
    "\u0219\u0003\u0002\u0002\u0002\u020a\u020b\u0007/\u0002\u0002\u020b",
    "\u0219\u0005\u00be`\u0002\u020c\u0219\u0005*\u0016\u0002\u020d\u020e",
    "\u0007\u00aa\u0002\u0002\u020e\u0210\u0007\u00ab\u0002\u0002\u020f\u020d",
    "\u0003\u0002\u0002\u0002\u020f\u0210\u0003\u0002\u0002\u0002\u0210\u0211",
    "\u0003\u0002\u0002\u0002\u0211\u0212\u0007#\u0002\u0002\u0212\u0213",
    "\u0007\u0005\u0002\u0002\u0213\u0214\u0005D#\u0002\u0214\u0216\u0007",
    "\u0006\u0002\u0002\u0215\u0217\t\u0005\u0002\u0002\u0216\u0215\u0003",
    "\u0002\u0002\u0002\u0216\u0217\u0003\u0002\u0002\u0002\u0217\u0219\u0003",
    "\u0002\u0002\u0002\u0218\u01e9\u0003\u0002\u0002\u0002\u0218\u01f7\u0003",
    "\u0002\u0002\u0002\u0218\u01fc\u0003\u0002\u0002\u0002\u0218\u0201\u0003",
    "\u0002\u0002\u0002\u0218\u020a\u0003\u0002\u0002\u0002\u0218\u020c\u0003",
    "\u0002\u0002\u0002\u0218\u020f\u0003\u0002\u0002\u0002\u0219%\u0003",
    "\u0002\u0002\u0002\u021a\u021c\t\u0006\u0002\u0002\u021b\u021a\u0003",
    "\u0002\u0002\u0002\u021b\u021c\u0003\u0002\u0002\u0002\u021c\u021d\u0003",
    "\u0002\u0002\u0002\u021d\u021e\u0007\u00bb\u0002\u0002\u021e\'\u0003",
    "\u0002\u0002\u0002\u021f\u0220\u00073\u0002\u0002\u0220\u0222\u0005",
    "\u00b0Y\u0002\u0221\u021f\u0003\u0002\u0002\u0002\u0221\u0222\u0003",
    "\u0002\u0002\u0002\u0222\u0248\u0003\u0002\u0002\u0002\u0223\u0224\u0007",
    "s\u0002\u0002\u0224\u0227\u0007a\u0002\u0002\u0225\u0227\u0007\u008d",
    "\u0002\u0002\u0226\u0223\u0003\u0002\u0002\u0002\u0226\u0225\u0003\u0002",
    "\u0002\u0002\u0227\u0228\u0003\u0002\u0002\u0002\u0228\u0229\u0007\u0005",
    "\u0002\u0002\u0229\u022e\u0005\u001c\u000f\u0002\u022a\u022b\u0007\u0007",
    "\u0002\u0002\u022b\u022d\u0005\u001c\u000f\u0002\u022c\u022a\u0003\u0002",
    "\u0002\u0002\u022d\u0230\u0003\u0002\u0002\u0002\u022e\u022c\u0003\u0002",
    "\u0002\u0002\u022e\u022f\u0003\u0002\u0002\u0002\u022f\u0231\u0003\u0002",
    "\u0002\u0002\u0230\u022e\u0003\u0002\u0002\u0002\u0231\u0233\u0007\u0006",
    "\u0002\u0002\u0232\u0234\u0005,\u0017\u0002\u0233\u0232\u0003\u0002",
    "\u0002\u0002\u0233\u0234\u0003\u0002\u0002\u0002\u0234\u0249\u0003\u0002",
    "\u0002\u0002\u0235\u0236\u0007.\u0002\u0002\u0236\u0237\u0007\u0005",
    "\u0002\u0002\u0237\u0238\u0005D#\u0002\u0238\u0239\u0007\u0006\u0002",
    "\u0002\u0239\u0249\u0003\u0002\u0002\u0002\u023a\u023b\u0007L\u0002",
    "\u0002\u023b\u023c\u0007a\u0002\u0002\u023c\u023d\u0007\u0005\u0002",
    "\u0002\u023d\u0242\u0005\u00bc_\u0002\u023e\u023f\u0007\u0007\u0002",
    "\u0002\u023f\u0241\u0005\u00bc_\u0002\u0240\u023e\u0003\u0002\u0002",
    "\u0002\u0241\u0244\u0003\u0002\u0002\u0002\u0242\u0240\u0003\u0002\u0002",
    "\u0002\u0242\u0243\u0003\u0002\u0002\u0002\u0243\u0245\u0003\u0002\u0002",
    "\u0002\u0244\u0242\u0003\u0002\u0002\u0002\u0245\u0246\u0007\u0006\u0002",
    "\u0002\u0246\u0247\u0005*\u0016\u0002\u0247\u0249\u0003\u0002\u0002",
    "\u0002\u0248\u0226\u0003\u0002\u0002\u0002\u0248\u0235\u0003\u0002\u0002",
    "\u0002\u0248\u023a\u0003\u0002\u0002\u0002\u0249)\u0003\u0002\u0002",
    "\u0002\u024a\u024b\u0007w\u0002\u0002\u024b\u0257\u0005\u00c0a\u0002",
    "\u024c\u024d\u0007\u0005\u0002\u0002\u024d\u0252\u0005\u00bc_\u0002",
    "\u024e\u024f\u0007\u0007\u0002\u0002\u024f\u0251\u0005\u00bc_\u0002",
    "\u0250\u024e\u0003\u0002\u0002\u0002\u0251\u0254\u0003\u0002\u0002\u0002",
    "\u0252\u0250\u0003\u0002\u0002\u0002\u0252\u0253\u0003\u0002\u0002\u0002",
    "\u0253\u0255\u0003\u0002\u0002\u0002\u0254\u0252\u0003\u0002\u0002\u0002",
    "\u0255\u0256\u0007\u0006\u0002\u0002\u0256\u0258\u0003\u0002\u0002\u0002",
    "\u0257\u024c\u0003\u0002\u0002\u0002\u0257\u0258\u0003\u0002\u0002\u0002",
    "\u0258\u0267\u0003\u0002\u0002\u0002\u0259\u025a\u0007m\u0002\u0002",
    "\u025a\u0261\t\u0007\u0002\u0002\u025b\u025c\u0007\u0084\u0002\u0002",
    "\u025c\u0262\t\b\u0002\u0002\u025d\u0262\u0007+\u0002\u0002\u025e\u0262",
    "\u0007}\u0002\u0002\u025f\u0260\u0007g\u0002\u0002\u0260\u0262\u0007",
    "\u001c\u0002\u0002\u0261\u025b\u0003\u0002\u0002\u0002\u0261\u025d\u0003",
    "\u0002\u0002\u0002\u0261\u025e\u0003\u0002\u0002\u0002\u0261\u025f\u0003",
    "\u0002\u0002\u0002\u0262\u0266\u0003\u0002\u0002\u0002\u0263\u0264\u0007",
    "e\u0002\u0002\u0264\u0266\u0005\u00b0Y\u0002\u0265\u0259\u0003\u0002",
    "\u0002\u0002\u0265\u0263\u0003\u0002\u0002\u0002\u0266\u0269\u0003\u0002",
    "\u0002\u0002\u0267\u0265\u0003\u0002\u0002\u0002\u0267\u0268\u0003\u0002",
    "\u0002\u0002\u0268\u0272\u0003\u0002\u0002\u0002\u0269\u0267\u0003\u0002",
    "\u0002\u0002\u026a\u026c\u0007h\u0002\u0002\u026b\u026a\u0003\u0002",
    "\u0002\u0002\u026b\u026c\u0003\u0002\u0002\u0002\u026c\u026d\u0003\u0002",
    "\u0002\u0002\u026d\u0270\u0007;\u0002\u0002\u026e\u026f\u0007X\u0002",
    "\u0002\u026f\u0271\t\t\u0002\u0002\u0270\u026e\u0003\u0002\u0002\u0002",
    "\u0270\u0271\u0003\u0002\u0002\u0002\u0271\u0273\u0003\u0002\u0002\u0002",
    "\u0272\u026b\u0003\u0002\u0002\u0002\u0272\u0273\u0003\u0002\u0002\u0002",
    "\u0273+\u0003\u0002\u0002\u0002\u0274\u0275\u0007m\u0002\u0002\u0275",
    "\u0276\u00072\u0002\u0002\u0276\u0277\t\n\u0002\u0002\u0277-\u0003\u0002",
    "\u0002\u0002\u0278\u027a\u00074\u0002\u0002\u0279\u027b\t\u0004\u0002",
    "\u0002\u027a\u0279\u0003\u0002\u0002\u0002\u027a\u027b\u0003\u0002\u0002",
    "\u0002\u027b\u027c\u0003\u0002\u0002\u0002\u027c\u0280\u0007\u008b\u0002",
    "\u0002\u027d\u027e\u0007R\u0002\u0002\u027e\u027f\u0007h\u0002\u0002",
    "\u027f\u0281\u0007H\u0002\u0002\u0280\u027d\u0003\u0002\u0002\u0002",
    "\u0280\u0281\u0003\u0002\u0002\u0002\u0281\u0285\u0003\u0002\u0002\u0002",
    "\u0282\u0283\u0005\u00b4[\u0002\u0283\u0284\u0007\u0004\u0002\u0002",
    "\u0284\u0286\u0003\u0002\u0002\u0002\u0285\u0282\u0003\u0002\u0002\u0002",
    "\u0285\u0286\u0003\u0002\u0002\u0002\u0286\u0287\u0003\u0002\u0002\u0002",
    "\u0287\u028c\u0005\u00c4c\u0002\u0288\u028d\u0007\'\u0002\u0002\u0289",
    "\u028d\u0007\u001e\u0002\u0002\u028a\u028b\u0007[\u0002\u0002\u028b",
    "\u028d\u0007k\u0002\u0002\u028c\u0288\u0003\u0002\u0002\u0002\u028c",
    "\u0289\u0003\u0002\u0002\u0002\u028c\u028a\u0003\u0002\u0002\u0002\u028c",
    "\u028d\u0003\u0002\u0002\u0002\u028d\u029c\u0003\u0002\u0002\u0002\u028e",
    "\u029d\u0007=\u0002\u0002\u028f\u029d\u0007Z\u0002\u0002\u0290\u029a",
    "\u0007\u008e\u0002\u0002\u0291\u0292\u0007k\u0002\u0002\u0292\u0297",
    "\u0005\u00bc_\u0002\u0293\u0294\u0007\u0007\u0002\u0002\u0294\u0296",
    "\u0005\u00bc_\u0002\u0295\u0293\u0003\u0002\u0002\u0002\u0296\u0299",
    "\u0003\u0002\u0002\u0002\u0297\u0295\u0003\u0002\u0002\u0002\u0297\u0298",
    "\u0003\u0002\u0002\u0002\u0298\u029b\u0003\u0002\u0002\u0002\u0299\u0297",
    "\u0003\u0002\u0002\u0002\u029a\u0291\u0003\u0002\u0002\u0002\u029a\u029b",
    "\u0003\u0002\u0002\u0002\u029b\u029d\u0003\u0002\u0002\u0002\u029c\u028e",
    "\u0003\u0002\u0002\u0002\u029c\u028f\u0003\u0002\u0002\u0002\u029c\u0290",
    "\u0003\u0002\u0002\u0002\u029d\u029e\u0003\u0002\u0002\u0002\u029e\u029f",
    "\u0007m\u0002\u0002\u029f\u02a3\u0005\u00b6\\\u0002\u02a0\u02a1\u0007",
    "K\u0002\u0002\u02a1\u02a2\u0007B\u0002\u0002\u02a2\u02a4\u0007\u0080",
    "\u0002\u0002\u02a3\u02a0\u0003\u0002\u0002\u0002\u02a3\u02a4\u0003\u0002",
    "\u0002\u0002\u02a4\u02a7\u0003\u0002\u0002\u0002\u02a5\u02a6\u0007\u0094",
    "\u0002\u0002\u02a6\u02a8\u0005D#\u0002\u02a7\u02a5\u0003\u0002\u0002",
    "\u0002\u02a7\u02a8\u0003\u0002\u0002\u0002\u02a8\u02a9\u0003\u0002\u0002",
    "\u0002\u02a9\u02b2\u0007(\u0002\u0002\u02aa\u02af\u0005j6\u0002\u02ab",
    "\u02af\u0005J&\u0002\u02ac\u02af\u0005<\u001f\u0002\u02ad\u02af\u0005",
    "T+\u0002\u02ae\u02aa\u0003\u0002\u0002\u0002\u02ae\u02ab\u0003\u0002",
    "\u0002\u0002\u02ae\u02ac\u0003\u0002\u0002\u0002\u02ae\u02ad\u0003\u0002",
    "\u0002\u0002\u02af\u02b0\u0003\u0002\u0002\u0002\u02b0\u02b1\u0007\u0003",
    "\u0002\u0002\u02b1\u02b3\u0003\u0002\u0002\u0002\u02b2\u02ae\u0003\u0002",
    "\u0002\u0002\u02b3\u02b4\u0003\u0002\u0002\u0002\u02b4\u02b2\u0003\u0002",
    "\u0002\u0002\u02b4\u02b5\u0003\u0002\u0002\u0002\u02b5\u02b6\u0003\u0002",
    "\u0002\u0002\u02b6\u02b7\u0007D\u0002\u0002\u02b7/\u0003\u0002\u0002",
    "\u0002\u02b8\u02ba\u00074\u0002\u0002\u02b9\u02bb\t\u0004\u0002\u0002",
    "\u02ba\u02b9\u0003\u0002\u0002\u0002\u02ba\u02bb\u0003\u0002\u0002\u0002",
    "\u02bb\u02bc\u0003\u0002\u0002\u0002\u02bc\u02c0\u0007\u0092\u0002\u0002",
    "\u02bd\u02be\u0007R\u0002\u0002\u02be\u02bf\u0007h\u0002\u0002\u02bf",
    "\u02c1\u0007H\u0002\u0002\u02c0\u02bd\u0003\u0002\u0002\u0002\u02c0",
    "\u02c1\u0003\u0002\u0002\u0002\u02c1\u02c5\u0003\u0002\u0002\u0002\u02c2",
    "\u02c3\u0005\u00b4[\u0002\u02c3\u02c4\u0007\u0004\u0002\u0002\u02c4",
    "\u02c6\u0003\u0002\u0002\u0002\u02c5\u02c2\u0003\u0002\u0002\u0002\u02c5",
    "\u02c6\u0003\u0002\u0002\u0002\u02c6\u02c7\u0003\u0002\u0002\u0002\u02c7",
    "\u02d3\u0005\u00c6d\u0002\u02c8\u02c9\u0007\u0005\u0002\u0002\u02c9",
    "\u02ce\u0005\u00bc_\u0002\u02ca\u02cb\u0007\u0007\u0002\u0002\u02cb",
    "\u02cd\u0005\u00bc_\u0002\u02cc\u02ca\u0003\u0002\u0002\u0002\u02cd",
    "\u02d0\u0003\u0002\u0002\u0002\u02ce\u02cc\u0003\u0002\u0002\u0002\u02ce",
    "\u02cf\u0003\u0002\u0002\u0002\u02cf\u02d1\u0003\u0002\u0002\u0002\u02d0",
    "\u02ce\u0003\u0002\u0002\u0002\u02d1\u02d2\u0007\u0006\u0002\u0002\u02d2",
    "\u02d4\u0003\u0002\u0002\u0002\u02d3\u02c8\u0003\u0002\u0002\u0002\u02d3",
    "\u02d4\u0003\u0002\u0002\u0002\u02d4\u02d5\u0003\u0002\u0002\u0002\u02d5",
    "\u02d6\u0007#\u0002\u0002\u02d6\u02d7\u0005T+\u0002\u02d71\u0003\u0002",
    "\u0002\u0002\u02d8\u02d9\u00074\u0002\u0002\u02d9\u02da\u0007\u0093",
    "\u0002\u0002\u02da\u02de\u0007\u0085\u0002\u0002\u02db\u02dc\u0007R",
    "\u0002\u0002\u02dc\u02dd\u0007h\u0002\u0002\u02dd\u02df\u0007H\u0002",
    "\u0002\u02de\u02db\u0003\u0002\u0002\u0002\u02de\u02df\u0003\u0002\u0002",
    "\u0002\u02df\u02e3\u0003\u0002\u0002\u0002\u02e0\u02e1\u0005\u00b4[",
    "\u0002\u02e1\u02e2\u0007\u0004\u0002\u0002\u02e2\u02e4\u0003\u0002\u0002",
    "\u0002\u02e3\u02e0\u0003\u0002\u0002\u0002\u02e3\u02e4\u0003\u0002\u0002",
    "\u0002\u02e4\u02e5\u0003\u0002\u0002\u0002\u02e5\u02e6\u0005\u00b6\\",
    "\u0002\u02e6\u02e7\u0007\u008f\u0002\u0002\u02e7\u02f3\u0005\u00c8e",
    "\u0002\u02e8\u02e9\u0007\u0005\u0002\u0002\u02e9\u02ee\u0005\u00aaV",
    "\u0002\u02ea\u02eb\u0007\u0007\u0002\u0002\u02eb\u02ed\u0005\u00aaV",
    "\u0002\u02ec\u02ea\u0003\u0002\u0002\u0002\u02ed\u02f0\u0003\u0002\u0002",
    "\u0002\u02ee\u02ec\u0003\u0002\u0002\u0002\u02ee\u02ef\u0003\u0002\u0002",
    "\u0002\u02ef\u02f1\u0003\u0002\u0002\u0002\u02f0\u02ee\u0003\u0002\u0002",
    "\u0002\u02f1\u02f2\u0007\u0006\u0002\u0002\u02f2\u02f4\u0003\u0002\u0002",
    "\u0002\u02f3\u02e8\u0003\u0002\u0002\u0002\u02f3\u02f4\u0003\u0002\u0002",
    "\u0002\u02f43\u0003\u0002\u0002\u0002\u02f5\u02f7\u0007\u0096\u0002",
    "\u0002\u02f6\u02f8\u0007v\u0002\u0002\u02f7\u02f6\u0003\u0002\u0002",
    "\u0002\u02f7\u02f8\u0003\u0002\u0002\u0002\u02f8\u02f9\u0003\u0002\u0002",
    "\u0002\u02f9\u02fa\u00056\u001c\u0002\u02fa\u02fb\u0007#\u0002\u0002",
    "\u02fb\u02fc\u0007\u0005\u0002\u0002\u02fc\u02fd\u0005T+\u0002\u02fd",
    "\u0307\u0007\u0006\u0002\u0002\u02fe\u02ff\u0007\u0007\u0002\u0002\u02ff",
    "\u0300\u00056\u001c\u0002\u0300\u0301\u0007#\u0002\u0002\u0301\u0302",
    "\u0007\u0005\u0002\u0002\u0302\u0303\u0005T+\u0002\u0303\u0304\u0007",
    "\u0006\u0002\u0002\u0304\u0306\u0003\u0002\u0002\u0002\u0305\u02fe\u0003",
    "\u0002\u0002\u0002\u0306\u0309\u0003\u0002\u0002\u0002\u0307\u0305\u0003",
    "\u0002\u0002\u0002\u0307\u0308\u0003\u0002\u0002\u0002\u03085\u0003",
    "\u0002\u0002\u0002\u0309\u0307\u0003\u0002\u0002\u0002\u030a\u0316\u0005",
    "\u00b6\\\u0002\u030b\u030c\u0007\u0005\u0002\u0002\u030c\u0311\u0005",
    "\u00bc_\u0002\u030d\u030e\u0007\u0007\u0002\u0002\u030e\u0310\u0005",
    "\u00bc_\u0002\u030f\u030d\u0003\u0002\u0002\u0002\u0310\u0313\u0003",
    "\u0002\u0002\u0002\u0311\u030f\u0003\u0002\u0002\u0002\u0311\u0312\u0003",
    "\u0002\u0002\u0002\u0312\u0314\u0003\u0002\u0002\u0002\u0313\u0311\u0003",
    "\u0002\u0002\u0002\u0314\u0315\u0007\u0006\u0002\u0002\u0315\u0317\u0003",
    "\u0002\u0002\u0002\u0316\u030b\u0003\u0002\u0002\u0002\u0316\u0317\u0003",
    "\u0002\u0002\u0002\u03177\u0003\u0002\u0002\u0002\u0318\u0319\u0005",
    "6\u001c\u0002\u0319\u031a\u0007#\u0002\u0002\u031a\u031b\u0007\u0005",
    "\u0002\u0002\u031b\u031c\u0005\u00a2R\u0002\u031c\u031e\u0007\u008c",
    "\u0002\u0002\u031d\u031f\u0007\u001f\u0002\u0002\u031e\u031d\u0003\u0002",
    "\u0002\u0002\u031e\u031f\u0003\u0002\u0002\u0002\u031f\u0320\u0003\u0002",
    "\u0002\u0002\u0320\u0321\u0005\u00a4S\u0002\u0321\u0322\u0007\u0006",
    "\u0002\u0002\u03229\u0003\u0002\u0002\u0002\u0323\u032f\u0005\u00b6",
    "\\\u0002\u0324\u0325\u0007\u0005\u0002\u0002\u0325\u032a\u0005\u00bc",
    "_\u0002\u0326\u0327\u0007\u0007\u0002\u0002\u0327\u0329\u0005\u00bc",
    "_\u0002\u0328\u0326\u0003\u0002\u0002\u0002\u0329\u032c\u0003\u0002",
    "\u0002\u0002\u032a\u0328\u0003\u0002\u0002\u0002\u032a\u032b\u0003\u0002",
    "\u0002\u0002\u032b\u032d\u0003\u0002\u0002\u0002\u032c\u032a\u0003\u0002",
    "\u0002\u0002\u032d\u032e\u0007\u0006\u0002\u0002\u032e\u0330\u0003\u0002",
    "\u0002\u0002\u032f\u0324\u0003\u0002\u0002\u0002\u032f\u0330\u0003\u0002",
    "\u0002\u0002\u0330\u0331\u0003\u0002\u0002\u0002\u0331\u0332\u0007#",
    "\u0002\u0002\u0332\u0333\u0007\u0005\u0002\u0002\u0333\u0334\u0005T",
    "+\u0002\u0334\u0335\u0007\u0006\u0002\u0002\u0335;\u0003\u0002\u0002",
    "\u0002\u0336\u0338\u00054\u001b\u0002\u0337\u0336\u0003\u0002\u0002",
    "\u0002\u0337\u0338\u0003\u0002\u0002\u0002\u0338\u0339\u0003\u0002\u0002",
    "\u0002\u0339\u033a\u0007=\u0002\u0002\u033a\u033b\u0007M\u0002\u0002",
    "\u033b\u033e\u0005p9\u0002\u033c\u033d\u0007\u0095\u0002\u0002\u033d",
    "\u033f\u0005D#\u0002\u033e\u033c\u0003\u0002\u0002\u0002\u033e\u033f",
    "\u0003\u0002\u0002\u0002\u033f=\u0003\u0002\u0002\u0002\u0340\u0342",
    "\u00054\u001b\u0002\u0341\u0340\u0003\u0002\u0002\u0002\u0341\u0342",
    "\u0003\u0002\u0002\u0002\u0342\u0343\u0003\u0002\u0002\u0002\u0343\u0344",
    "\u0007=\u0002\u0002\u0344\u0345\u0007M\u0002\u0002\u0345\u0348\u0005",
    "p9\u0002\u0346\u0347\u0007\u0095\u0002\u0002\u0347\u0349\u0005D#\u0002",
    "\u0348\u0346\u0003\u0002\u0002\u0002\u0348\u0349\u0003\u0002\u0002\u0002",
    "\u0349\u034e\u0003\u0002\u0002\u0002\u034a\u034c\u0005\u0086D\u0002",
    "\u034b\u034a\u0003\u0002\u0002\u0002\u034b\u034c\u0003\u0002\u0002\u0002",
    "\u034c\u034d\u0003\u0002\u0002\u0002\u034d\u034f\u0005\u0088E\u0002",
    "\u034e\u034b\u0003\u0002\u0002\u0002\u034e\u034f\u0003\u0002\u0002\u0002",
    "\u034f?\u0003\u0002\u0002\u0002\u0350\u0352\u0007?\u0002\u0002\u0351",
    "\u0353\u00079\u0002\u0002\u0352\u0351\u0003\u0002\u0002\u0002\u0352",
    "\u0353\u0003\u0002\u0002\u0002\u0353\u0354\u0003\u0002\u0002\u0002\u0354",
    "\u0355\u0005\u00b4[\u0002\u0355A\u0003\u0002\u0002\u0002\u0356\u0357",
    "\u0007A\u0002\u0002\u0357\u035a\t\u000b\u0002\u0002\u0358\u0359\u0007",
    "R\u0002\u0002\u0359\u035b\u0007H\u0002\u0002\u035a\u0358\u0003\u0002",
    "\u0002\u0002\u035a\u035b\u0003\u0002\u0002\u0002\u035b\u035f\u0003\u0002",
    "\u0002\u0002\u035c\u035d\u0005\u00b4[\u0002\u035d\u035e\u0007\u0004",
    "\u0002\u0002\u035e\u0360\u0003\u0002\u0002\u0002\u035f\u035c\u0003\u0002",
    "\u0002\u0002\u035f\u0360\u0003\u0002\u0002\u0002\u0360\u0361\u0003\u0002",
    "\u0002\u0002\u0361\u0362\u0005\u00e0q\u0002\u0362C\u0003\u0002\u0002",
    "\u0002\u0363\u0364\b#\u0001\u0002\u0364\u03bc\u0005H%\u0002\u0365\u03bc",
    "\u0007\u00bc\u0002\u0002\u0366\u0367\u0005\u00b4[\u0002\u0367\u0368",
    "\u0007\u0004\u0002\u0002\u0368\u036a\u0003\u0002\u0002\u0002\u0369\u0366",
    "\u0003\u0002\u0002\u0002\u0369\u036a\u0003\u0002\u0002\u0002\u036a\u036b",
    "\u0003\u0002\u0002\u0002\u036b\u036c\u0005\u00b6\\\u0002\u036c\u036d",
    "\u0007\u0004\u0002\u0002\u036d\u036f\u0003\u0002\u0002\u0002\u036e\u0369",
    "\u0003\u0002\u0002\u0002\u036e\u036f\u0003\u0002\u0002\u0002\u036f\u0370",
    "\u0003\u0002\u0002\u0002\u0370\u03bc\u0005\u00bc_\u0002\u0371\u0372",
    "\u0005\u00a6T\u0002\u0372\u0373\u0005D#\u0017\u0373\u03bc\u0003\u0002",
    "\u0002\u0002\u0374\u0375\u0005\u00b2Z\u0002\u0375\u0382\u0007\u0005",
    "\u0002\u0002\u0376\u0378\u0007@\u0002\u0002\u0377\u0376\u0003\u0002",
    "\u0002\u0002\u0377\u0378\u0003\u0002\u0002\u0002\u0378\u0379\u0003\u0002",
    "\u0002\u0002\u0379\u037e\u0005D#\u0002\u037a\u037b\u0007\u0007\u0002",
    "\u0002\u037b\u037d\u0005D#\u0002\u037c\u037a\u0003\u0002\u0002\u0002",
    "\u037d\u0380\u0003\u0002\u0002\u0002\u037e\u037c\u0003\u0002\u0002\u0002",
    "\u037e\u037f\u0003\u0002\u0002\u0002\u037f\u0383\u0003\u0002\u0002\u0002",
    "\u0380\u037e\u0003\u0002\u0002\u0002\u0381\u0383\u0007\t\u0002\u0002",
    "\u0382\u0377\u0003\u0002\u0002\u0002\u0382\u0381\u0003\u0002\u0002\u0002",
    "\u0382\u0383\u0003\u0002\u0002\u0002\u0383\u0384\u0003\u0002\u0002\u0002",
    "\u0384\u0386\u0007\u0006\u0002\u0002\u0385\u0387\u0005t;\u0002\u0386",
    "\u0385\u0003\u0002\u0002\u0002\u0386\u0387\u0003\u0002\u0002\u0002\u0387",
    "\u0389\u0003\u0002\u0002\u0002\u0388\u038a\u0005x=\u0002\u0389\u0388",
    "\u0003\u0002\u0002\u0002\u0389\u038a\u0003\u0002\u0002\u0002\u038a\u03bc",
    "\u0003\u0002\u0002\u0002\u038b\u038c\u0007\u0005\u0002\u0002\u038c\u0391",
    "\u0005D#\u0002\u038d\u038e\u0007\u0007\u0002\u0002\u038e\u0390\u0005",
    "D#\u0002\u038f\u038d\u0003\u0002\u0002\u0002\u0390\u0393\u0003\u0002",
    "\u0002\u0002\u0391\u038f\u0003\u0002\u0002\u0002\u0391\u0392\u0003\u0002",
    "\u0002\u0002\u0392\u0394\u0003\u0002\u0002\u0002\u0393\u0391\u0003\u0002",
    "\u0002\u0002\u0394\u0395\u0007\u0006\u0002\u0002\u0395\u03bc\u0003\u0002",
    "\u0002\u0002\u0396\u0397\u0007-\u0002\u0002\u0397\u0398\u0007\u0005",
    "\u0002\u0002\u0398\u0399\u0005D#\u0002\u0399\u039a\u0007#\u0002\u0002",
    "\u039a\u039b\u0005\"\u0012\u0002\u039b\u039c\u0007\u0006\u0002\u0002",
    "\u039c\u03bc\u0003\u0002\u0002\u0002\u039d\u039f\u0007h\u0002\u0002",
    "\u039e\u039d\u0003\u0002\u0002\u0002\u039e\u039f\u0003\u0002\u0002\u0002",
    "\u039f\u03a0\u0003\u0002\u0002\u0002\u03a0\u03a2\u0007H\u0002\u0002",
    "\u03a1\u039e\u0003\u0002\u0002\u0002\u03a1\u03a2\u0003\u0002\u0002\u0002",
    "\u03a2\u03a3\u0003\u0002\u0002\u0002\u03a3\u03a4\u0007\u0005\u0002\u0002",
    "\u03a4\u03a5\u0005T+\u0002\u03a5\u03a6\u0007\u0006\u0002\u0002\u03a6",
    "\u03bc\u0003\u0002\u0002\u0002\u03a7\u03a9\u0007,\u0002\u0002\u03a8",
    "\u03aa\u0005D#\u0002\u03a9\u03a8\u0003\u0002\u0002\u0002\u03a9\u03aa",
    "\u0003\u0002\u0002\u0002\u03aa\u03b0\u0003\u0002\u0002\u0002\u03ab\u03ac",
    "\u0007\u0094\u0002\u0002\u03ac\u03ad\u0005D#\u0002\u03ad\u03ae\u0007",
    "\u0088\u0002\u0002\u03ae\u03af\u0005D#\u0002\u03af\u03b1\u0003\u0002",
    "\u0002\u0002\u03b0\u03ab\u0003\u0002\u0002\u0002\u03b1\u03b2\u0003\u0002",
    "\u0002\u0002\u03b2\u03b0\u0003\u0002\u0002\u0002\u03b2\u03b3\u0003\u0002",
    "\u0002\u0002\u03b3\u03b6\u0003\u0002\u0002\u0002\u03b4\u03b5\u0007C",
    "\u0002\u0002\u03b5\u03b7\u0005D#\u0002\u03b6\u03b4\u0003\u0002\u0002",
    "\u0002\u03b6\u03b7\u0003\u0002\u0002\u0002\u03b7\u03b8\u0003\u0002\u0002",
    "\u0002\u03b8\u03b9\u0007D\u0002\u0002\u03b9\u03bc\u0003\u0002\u0002",
    "\u0002\u03ba\u03bc\u0005F$\u0002\u03bb\u0363\u0003\u0002\u0002\u0002",
    "\u03bb\u0365\u0003\u0002\u0002\u0002\u03bb\u036e\u0003\u0002\u0002\u0002",
    "\u03bb\u0371\u0003\u0002\u0002\u0002\u03bb\u0374\u0003\u0002\u0002\u0002",
    "\u03bb\u038b\u0003\u0002\u0002\u0002\u03bb\u0396\u0003\u0002\u0002\u0002",
    "\u03bb\u03a1\u0003\u0002\u0002\u0002\u03bb\u03a7\u0003\u0002\u0002\u0002",
    "\u03bb\u03ba\u0003\u0002\u0002\u0002\u03bc\u0434\u0003\u0002\u0002\u0002",
    "\u03bd\u03be\f\u0016\u0002\u0002\u03be\u03bf\u0007\r\u0002\u0002\u03bf",
    "\u0433\u0005D#\u0017\u03c0\u03c1\f\u0015\u0002\u0002\u03c1\u03c2\t\f",
    "\u0002\u0002\u03c2\u0433\u0005D#\u0016\u03c3\u03c4\f\u0014\u0002\u0002",
    "\u03c4\u03c5\t\u0006\u0002\u0002\u03c5\u0433\u0005D#\u0015\u03c6\u03c7",
    "\f\u0013\u0002\u0002\u03c7\u03c8\t\r\u0002\u0002\u03c8\u0433\u0005D",
    "#\u0014\u03c9\u03ca\f\u0012\u0002\u0002\u03ca\u03cb\t\u000e\u0002\u0002",
    "\u03cb\u0433\u0005D#\u0013\u03cc\u03d9\f\u0011\u0002\u0002\u03cd\u03da",
    "\u0007\b\u0002\u0002\u03ce\u03da\u0007\u0018\u0002\u0002\u03cf\u03da",
    "\u0007\u0019\u0002\u0002\u03d0\u03da\u0007\u001a\u0002\u0002\u03d1\u03da",
    "\u0007^\u0002\u0002\u03d2\u03d3\u0007^\u0002\u0002\u03d3\u03da\u0007",
    "h\u0002\u0002\u03d4\u03da\u0007U\u0002\u0002\u03d5\u03da\u0007c\u0002",
    "\u0002\u03d6\u03da\u0007O\u0002\u0002\u03d7\u03da\u0007e\u0002\u0002",
    "\u03d8\u03da\u0007x\u0002\u0002\u03d9\u03cd\u0003\u0002\u0002\u0002",
    "\u03d9\u03ce\u0003\u0002\u0002\u0002\u03d9\u03cf\u0003\u0002\u0002\u0002",
    "\u03d9\u03d0\u0003\u0002\u0002\u0002\u03d9\u03d1\u0003\u0002\u0002\u0002",
    "\u03d9\u03d2\u0003\u0002\u0002\u0002\u03d9\u03d4\u0003\u0002\u0002\u0002",
    "\u03d9\u03d5\u0003\u0002\u0002\u0002\u03d9\u03d6\u0003\u0002\u0002\u0002",
    "\u03d9\u03d7\u0003\u0002\u0002\u0002\u03d9\u03d8\u0003\u0002\u0002\u0002",
    "\u03da\u03db\u0003\u0002\u0002\u0002\u03db\u0433\u0005D#\u0012\u03dc",
    "\u03dd\f\u0010\u0002\u0002\u03dd\u03de\u0007\"\u0002\u0002\u03de\u0433",
    "\u0005D#\u0011\u03df\u03e0\f\u000f\u0002\u0002\u03e0\u03e1\u0007n\u0002",
    "\u0002\u03e1\u0433\u0005D#\u0010\u03e2\u03e3\f\b\u0002\u0002\u03e3\u03e5",
    "\u0007^\u0002\u0002\u03e4\u03e6\u0007h\u0002\u0002\u03e5\u03e4\u0003",
    "\u0002\u0002\u0002\u03e5\u03e6\u0003\u0002\u0002\u0002\u03e6\u03e7\u0003",
    "\u0002\u0002\u0002\u03e7\u0433\u0005D#\t\u03e8\u03ea\f\u0007\u0002\u0002",
    "\u03e9\u03eb\u0007h\u0002\u0002\u03ea\u03e9\u0003\u0002\u0002\u0002",
    "\u03ea\u03eb\u0003\u0002\u0002\u0002\u03eb\u03ec\u0003\u0002\u0002\u0002",
    "\u03ec\u03ed\u0007)\u0002\u0002\u03ed\u03ee\u0005D#\u0002\u03ee\u03ef",
    "\u0007\"\u0002\u0002\u03ef\u03f0\u0005D#\b\u03f0\u0433\u0003\u0002\u0002",
    "\u0002\u03f1\u03f2\f\u000b\u0002\u0002\u03f2\u03f3\u0007/\u0002\u0002",
    "\u03f3\u0433\u0005\u00be`\u0002\u03f4\u03f6\f\n\u0002\u0002\u03f5\u03f7",
    "\u0007h\u0002\u0002\u03f6\u03f5\u0003\u0002\u0002\u0002\u03f6\u03f7",
    "\u0003\u0002\u0002\u0002\u03f7\u03f8\u0003\u0002\u0002\u0002\u03f8\u03f9",
    "\t\u000f\u0002\u0002\u03f9\u03fc\u0005D#\u0002\u03fa\u03fb\u0007E\u0002",
    "\u0002\u03fb\u03fd\u0005D#\u0002\u03fc\u03fa\u0003\u0002\u0002\u0002",
    "\u03fc\u03fd\u0003\u0002\u0002\u0002\u03fd\u0433\u0003\u0002\u0002\u0002",
    "\u03fe\u0403\f\t\u0002\u0002\u03ff\u0404\u0007_\u0002\u0002\u0400\u0404",
    "\u0007i\u0002\u0002\u0401\u0402\u0007h\u0002\u0002\u0402\u0404\u0007",
    "j\u0002\u0002\u0403\u03ff\u0003\u0002\u0002\u0002\u0403\u0400\u0003",
    "\u0002\u0002\u0002\u0403\u0401\u0003\u0002\u0002\u0002\u0404\u0433\u0003",
    "\u0002\u0002\u0002\u0405\u0407\f\u0006\u0002\u0002\u0406\u0408\u0007",
    "h\u0002\u0002\u0407\u0406\u0003\u0002\u0002\u0002\u0407\u0408\u0003",
    "\u0002\u0002\u0002\u0408\u0409\u0003\u0002\u0002\u0002\u0409\u0430\u0007",
    "U\u0002\u0002\u040a\u0414\u0007\u0005\u0002\u0002\u040b\u0415\u0005",
    "T+\u0002\u040c\u0411\u0005D#\u0002\u040d\u040e\u0007\u0007\u0002\u0002",
    "\u040e\u0410\u0005D#\u0002\u040f\u040d\u0003\u0002\u0002\u0002\u0410",
    "\u0413\u0003\u0002\u0002\u0002\u0411\u040f\u0003\u0002\u0002\u0002\u0411",
    "\u0412\u0003\u0002\u0002\u0002\u0412\u0415\u0003\u0002\u0002\u0002\u0413",
    "\u0411\u0003\u0002\u0002\u0002\u0414\u040b\u0003\u0002\u0002\u0002\u0414",
    "\u040c\u0003\u0002\u0002\u0002\u0414\u0415\u0003\u0002\u0002\u0002\u0415",
    "\u0416\u0003\u0002\u0002\u0002\u0416\u0431\u0007\u0006\u0002\u0002\u0417",
    "\u0418\u0005\u00b4[\u0002\u0418\u0419\u0007\u0004\u0002\u0002\u0419",
    "\u041b\u0003\u0002\u0002\u0002\u041a\u0417\u0003\u0002\u0002\u0002\u041a",
    "\u041b\u0003\u0002\u0002\u0002\u041b\u041c\u0003\u0002\u0002\u0002\u041c",
    "\u0431\u0005\u00b6\\\u0002\u041d\u041e\u0005\u00b4[\u0002\u041e\u041f",
    "\u0007\u0004\u0002\u0002\u041f\u0421\u0003\u0002\u0002\u0002\u0420\u041d",
    "\u0003\u0002\u0002\u0002\u0420\u0421\u0003\u0002\u0002\u0002\u0421\u0422",
    "\u0003\u0002\u0002\u0002\u0422\u0423\u0005\u00dep\u0002\u0423\u042c",
    "\u0007\u0005\u0002\u0002\u0424\u0429\u0005D#\u0002\u0425\u0426\u0007",
    "\u0007\u0002\u0002\u0426\u0428\u0005D#\u0002\u0427\u0425\u0003\u0002",
    "\u0002\u0002\u0428\u042b\u0003\u0002\u0002\u0002\u0429\u0427\u0003\u0002",
    "\u0002\u0002\u0429\u042a\u0003\u0002\u0002\u0002\u042a\u042d\u0003\u0002",
    "\u0002\u0002\u042b\u0429\u0003\u0002\u0002\u0002\u042c\u0424\u0003\u0002",
    "\u0002\u0002\u042c\u042d\u0003\u0002\u0002\u0002\u042d\u042e\u0003\u0002",
    "\u0002\u0002\u042e\u042f\u0007\u0006\u0002\u0002\u042f\u0431\u0003\u0002",
    "\u0002\u0002\u0430\u040a\u0003\u0002\u0002\u0002\u0430\u041a\u0003\u0002",
    "\u0002\u0002\u0430\u0420\u0003\u0002\u0002\u0002\u0431\u0433\u0003\u0002",
    "\u0002\u0002\u0432\u03bd\u0003\u0002\u0002\u0002\u0432\u03c0\u0003\u0002",
    "\u0002\u0002\u0432\u03c3\u0003\u0002\u0002\u0002\u0432\u03c6\u0003\u0002",
    "\u0002\u0002\u0432\u03c9\u0003\u0002\u0002\u0002\u0432\u03cc\u0003\u0002",
    "\u0002\u0002\u0432\u03dc\u0003\u0002\u0002\u0002\u0432\u03df\u0003\u0002",
    "\u0002\u0002\u0432\u03e2\u0003\u0002\u0002\u0002\u0432\u03e8\u0003\u0002",
    "\u0002\u0002\u0432\u03f1\u0003\u0002\u0002\u0002\u0432\u03f4\u0003\u0002",
    "\u0002\u0002\u0432\u03fe\u0003\u0002\u0002\u0002\u0432\u0405\u0003\u0002",
    "\u0002\u0002\u0433\u0436\u0003\u0002\u0002\u0002\u0434\u0432\u0003\u0002",
    "\u0002\u0002\u0434\u0435\u0003\u0002\u0002\u0002\u0435E\u0003\u0002",
    "\u0002\u0002\u0436\u0434\u0003\u0002\u0002\u0002\u0437\u0438\u0007u",
    "\u0002\u0002\u0438\u043d\u0007\u0005\u0002\u0002\u0439\u043e\u0007S",
    "\u0002\u0002\u043a\u043b\t\u0010\u0002\u0002\u043b\u043c\u0007\u0007",
    "\u0002\u0002\u043c\u043e\u0005\u00a8U\u0002\u043d\u0439\u0003\u0002",
    "\u0002\u0002\u043d\u043a\u0003\u0002\u0002\u0002\u043e\u043f\u0003\u0002",
    "\u0002\u0002\u043f\u0440\u0007\u0006\u0002\u0002\u0440G\u0003\u0002",
    "\u0002\u0002\u0441\u0442\t\u0011\u0002\u0002\u0442I\u0003\u0002\u0002",
    "\u0002\u0443\u0445\u00054\u001b\u0002\u0444\u0443\u0003\u0002\u0002",
    "\u0002\u0444\u0445\u0003\u0002\u0002\u0002\u0445\u044b\u0003\u0002\u0002",
    "\u0002\u0446\u044c\u0007Z\u0002\u0002\u0447\u044c\u0007|\u0002\u0002",
    "\u0448\u0449\u0007Z\u0002\u0002\u0449\u044a\u0007n\u0002\u0002\u044a",
    "\u044c\t\n\u0002\u0002\u044b\u0446\u0003\u0002\u0002\u0002\u044b\u0447",
    "\u0003\u0002\u0002\u0002\u044b\u0448\u0003\u0002\u0002\u0002\u044c\u044d",
    "\u0003\u0002\u0002\u0002\u044d\u0451\u0007]\u0002\u0002\u044e\u044f",
    "\u0005\u00b4[\u0002\u044f\u0450\u0007\u0004\u0002\u0002\u0450\u0452",
    "\u0003\u0002\u0002\u0002\u0451\u044e\u0003\u0002\u0002\u0002\u0451\u0452",
    "\u0003\u0002\u0002\u0002\u0452\u0453\u0003\u0002\u0002\u0002\u0453\u0456",
    "\u0005\u00b6\\\u0002\u0454\u0455\u0007#\u0002\u0002\u0455\u0457\u0005",
    "\u00ceh\u0002\u0456\u0454\u0003\u0002\u0002\u0002\u0456\u0457\u0003",
    "\u0002\u0002\u0002\u0457\u0463\u0003\u0002\u0002\u0002\u0458\u0459\u0007",
    "\u0005\u0002\u0002\u0459\u045e\u0005\u00bc_\u0002\u045a\u045b\u0007",
    "\u0007\u0002\u0002\u045b\u045d\u0005\u00bc_\u0002\u045c\u045a\u0003",
    "\u0002\u0002\u0002\u045d\u0460\u0003\u0002\u0002\u0002\u045e\u045c\u0003",
    "\u0002\u0002\u0002\u045e\u045f\u0003\u0002\u0002\u0002\u045f\u0461\u0003",
    "\u0002\u0002\u0002\u0460\u045e\u0003\u0002\u0002\u0002\u0461\u0462\u0007",
    "\u0006\u0002\u0002\u0462\u0464\u0003\u0002\u0002\u0002\u0463\u0458\u0003",
    "\u0002\u0002\u0002\u0463\u0464\u0003\u0002\u0002\u0002\u0464\u0482\u0003",
    "\u0002\u0002\u0002\u0465\u0466\u0007\u0091\u0002\u0002\u0466\u0467\u0007",
    "\u0005\u0002\u0002\u0467\u046c\u0005D#\u0002\u0468\u0469\u0007\u0007",
    "\u0002\u0002\u0469\u046b\u0005D#\u0002\u046a\u0468\u0003\u0002\u0002",
    "\u0002\u046b\u046e\u0003\u0002\u0002\u0002\u046c\u046a\u0003\u0002\u0002",
    "\u0002\u046c\u046d\u0003\u0002\u0002\u0002\u046d\u046f\u0003\u0002\u0002",
    "\u0002\u046e\u046c\u0003\u0002\u0002\u0002\u046f\u047e\u0007\u0006\u0002",
    "\u0002\u0470\u0471\u0007\u0007\u0002\u0002\u0471\u0472\u0007\u0005\u0002",
    "\u0002\u0472\u0477\u0005D#\u0002\u0473\u0474\u0007\u0007\u0002\u0002",
    "\u0474\u0476\u0005D#\u0002\u0475\u0473\u0003\u0002\u0002\u0002\u0476",
    "\u0479\u0003\u0002\u0002\u0002\u0477\u0475\u0003\u0002\u0002\u0002\u0477",
    "\u0478\u0003\u0002\u0002\u0002\u0478\u047a\u0003\u0002\u0002\u0002\u0479",
    "\u0477\u0003\u0002\u0002\u0002\u047a\u047b\u0007\u0006\u0002\u0002\u047b",
    "\u047d\u0003\u0002\u0002\u0002\u047c\u0470\u0003\u0002\u0002\u0002\u047d",
    "\u0480\u0003\u0002\u0002\u0002\u047e\u047c\u0003\u0002\u0002\u0002\u047e",
    "\u047f\u0003\u0002\u0002\u0002\u047f\u0483\u0003\u0002\u0002\u0002\u0480",
    "\u047e\u0003\u0002\u0002\u0002\u0481\u0483\u0005T+\u0002\u0482\u0465",
    "\u0003\u0002\u0002\u0002\u0482\u0481\u0003\u0002\u0002\u0002\u0483\u0485",
    "\u0003\u0002\u0002\u0002\u0484\u0486\u0005L\'\u0002\u0485\u0484\u0003",
    "\u0002\u0002\u0002\u0485\u0486\u0003\u0002\u0002\u0002\u0486\u048a\u0003",
    "\u0002\u0002\u0002\u0487\u0488\u0007:\u0002\u0002\u0488\u048a\u0007",
    "\u0091\u0002\u0002\u0489\u0444\u0003\u0002\u0002\u0002\u0489\u0487\u0003",
    "\u0002\u0002\u0002\u048aK\u0003\u0002\u0002\u0002\u048b\u048c\u0007",
    "m\u0002\u0002\u048c\u049b\u00072\u0002\u0002\u048d\u048e\u0007\u0005",
    "\u0002\u0002\u048e\u0493\u0005\u001c\u000f\u0002\u048f\u0490\u0007\u0007",
    "\u0002\u0002\u0490\u0492\u0005\u001c\u000f\u0002\u0491\u048f\u0003\u0002",
    "\u0002\u0002\u0492\u0495\u0003\u0002\u0002\u0002\u0493\u0491\u0003\u0002",
    "\u0002\u0002\u0493\u0494\u0003\u0002\u0002\u0002\u0494\u0496\u0003\u0002",
    "\u0002\u0002\u0495\u0493\u0003\u0002\u0002\u0002\u0496\u0499\u0007\u0006",
    "\u0002\u0002\u0497\u0498\u0007\u0095\u0002\u0002\u0498\u049a\u0005D",
    "#\u0002\u0499\u0497\u0003\u0002\u0002\u0002\u0499\u049a\u0003\u0002",
    "\u0002\u0002\u049a\u049c\u0003\u0002\u0002\u0002\u049b\u048d\u0003\u0002",
    "\u0002\u0002\u049b\u049c\u0003\u0002\u0002\u0002\u049c\u049d\u0003\u0002",
    "\u0002\u0002\u049d\u04b8\u0007\u00b8\u0002\u0002\u049e\u04b9\u0007\u00b9",
    "\u0002\u0002\u049f\u04a0\u0007\u008e\u0002\u0002\u04a0\u04a3\u0007\u0084",
    "\u0002\u0002\u04a1\u04a4\u0005\u00bc_\u0002\u04a2\u04a4\u0005l7\u0002",
    "\u04a3\u04a1\u0003\u0002\u0002\u0002\u04a3\u04a2\u0003\u0002\u0002\u0002",
    "\u04a4\u04a5\u0003\u0002\u0002\u0002\u04a5\u04a6\u0007\u0018\u0002\u0002",
    "\u04a6\u04b1\u0005D#\u0002\u04a7\u04aa\u0007\u0007\u0002\u0002\u04a8",
    "\u04ab\u0005\u00bc_\u0002\u04a9\u04ab\u0005l7\u0002\u04aa\u04a8\u0003",
    "\u0002\u0002\u0002\u04aa\u04a9\u0003\u0002\u0002\u0002\u04ab\u04ac\u0003",
    "\u0002\u0002\u0002\u04ac\u04ad\u0007\u0018\u0002\u0002\u04ad\u04ae\u0005",
    "D#\u0002\u04ae\u04b0\u0003\u0002\u0002\u0002\u04af\u04a7\u0003\u0002",
    "\u0002\u0002\u04b0\u04b3\u0003\u0002\u0002\u0002\u04b1\u04af\u0003\u0002",
    "\u0002\u0002\u04b1\u04b2\u0003\u0002\u0002\u0002\u04b2\u04b6\u0003\u0002",
    "\u0002\u0002\u04b3\u04b1\u0003\u0002\u0002\u0002\u04b4\u04b5\u0007\u0095",
    "\u0002\u0002\u04b5\u04b7\u0005D#\u0002\u04b6\u04b4\u0003\u0002\u0002",
    "\u0002\u04b6\u04b7\u0003\u0002\u0002\u0002\u04b7\u04b9\u0003\u0002\u0002",
    "\u0002\u04b8\u049e\u0003\u0002\u0002\u0002\u04b8\u049f\u0003\u0002\u0002",
    "\u0002\u04b9M\u0003\u0002\u0002\u0002\u04ba\u04be\u0007r\u0002\u0002",
    "\u04bb\u04bc\u0005\u00b4[\u0002\u04bc\u04bd\u0007\u0004\u0002\u0002",
    "\u04bd\u04bf\u0003\u0002\u0002\u0002\u04be\u04bb\u0003\u0002\u0002\u0002",
    "\u04be\u04bf\u0003\u0002\u0002\u0002\u04bf\u04c0\u0003\u0002\u0002\u0002",
    "\u04c0\u04c7\u0005\u00caf\u0002\u04c1\u04c2\u0007\b\u0002\u0002\u04c2",
    "\u04c8\u0005P)\u0002\u04c3\u04c4\u0007\u0005\u0002\u0002\u04c4\u04c5",
    "\u0005P)\u0002\u04c5\u04c6\u0007\u0006\u0002\u0002\u04c6\u04c8\u0003",
    "\u0002\u0002\u0002\u04c7\u04c1\u0003\u0002\u0002\u0002\u04c7\u04c3\u0003",
    "\u0002\u0002\u0002\u04c7\u04c8\u0003\u0002\u0002\u0002\u04c8O\u0003",
    "\u0002\u0002\u0002\u04c9\u04cd\u0005&\u0014\u0002\u04ca\u04cd\u0005",
    "\u00b0Y\u0002\u04cb\u04cd\u0007\u00bd\u0002\u0002\u04cc\u04c9\u0003",
    "\u0002\u0002\u0002\u04cc\u04ca\u0003\u0002\u0002\u0002\u04cc\u04cb\u0003",
    "\u0002\u0002\u0002\u04cdQ\u0003\u0002\u0002\u0002\u04ce\u04d9\u0007",
    "y\u0002\u0002\u04cf\u04da\u0005\u00be`\u0002\u04d0\u04d1\u0005\u00b4",
    "[\u0002\u04d1\u04d2\u0007\u0004\u0002\u0002\u04d2\u04d4\u0003\u0002",
    "\u0002\u0002\u04d3\u04d0\u0003\u0002\u0002\u0002\u04d3\u04d4\u0003\u0002",
    "\u0002\u0002\u04d4\u04d7\u0003\u0002\u0002\u0002\u04d5\u04d8\u0005\u00b6",
    "\\\u0002\u04d6\u04d8\u0005\u00c2b\u0002\u04d7\u04d5\u0003\u0002\u0002",
    "\u0002\u04d7\u04d6\u0003\u0002\u0002\u0002\u04d8\u04da\u0003\u0002\u0002",
    "\u0002\u04d9\u04cf\u0003\u0002\u0002\u0002\u04d9\u04d3\u0003\u0002\u0002",
    "\u0002\u04d9\u04da\u0003\u0002\u0002\u0002\u04daS\u0003\u0002\u0002",
    "\u0002\u04db\u04dd\u0005\u0084C\u0002\u04dc\u04db\u0003\u0002\u0002",
    "\u0002\u04dc\u04dd\u0003\u0002\u0002\u0002\u04dd\u04de\u0003\u0002\u0002",
    "\u0002\u04de\u04e4\u0005X-\u0002\u04df\u04e0\u0005h5\u0002\u04e0\u04e1",
    "\u0005X-\u0002\u04e1\u04e3\u0003\u0002\u0002\u0002\u04e2\u04df\u0003",
    "\u0002\u0002\u0002\u04e3\u04e6\u0003\u0002\u0002\u0002\u04e4\u04e2\u0003",
    "\u0002\u0002\u0002\u04e4\u04e5\u0003\u0002\u0002\u0002\u04e5\u04e8\u0003",
    "\u0002\u0002\u0002\u04e6\u04e4\u0003\u0002\u0002\u0002\u04e7\u04e9\u0005",
    "\u0086D\u0002\u04e8\u04e7\u0003\u0002\u0002\u0002\u04e8\u04e9\u0003",
    "\u0002\u0002\u0002\u04e9\u04eb\u0003\u0002\u0002\u0002\u04ea\u04ec\u0005",
    "\u0088E\u0002\u04eb\u04ea\u0003\u0002\u0002\u0002\u04eb\u04ec\u0003",
    "\u0002\u0002\u0002\u04ecU\u0003\u0002\u0002\u0002\u04ed\u04f5\u0005",
    "`1\u0002\u04ee\u04ef\u0005d3\u0002\u04ef\u04f1\u0005`1\u0002\u04f0\u04f2",
    "\u0005f4\u0002\u04f1\u04f0\u0003\u0002\u0002\u0002\u04f1\u04f2\u0003",
    "\u0002\u0002\u0002\u04f2\u04f4\u0003\u0002\u0002\u0002\u04f3\u04ee\u0003",
    "\u0002\u0002\u0002\u04f4\u04f7\u0003\u0002\u0002\u0002\u04f5\u04f3\u0003",
    "\u0002\u0002\u0002\u04f5\u04f6\u0003\u0002\u0002\u0002\u04f6W\u0003",
    "\u0002\u0002\u0002\u04f7\u04f5\u0003\u0002\u0002\u0002\u04f8\u04fa\u0007",
    "\u0083\u0002\u0002\u04f9\u04fb\t\u0012\u0002\u0002\u04fa\u04f9\u0003",
    "\u0002\u0002\u0002\u04fa\u04fb\u0003\u0002\u0002\u0002\u04fb\u04fc\u0003",
    "\u0002\u0002\u0002\u04fc\u0501\u0005b2\u0002\u04fd\u04fe\u0007\u0007",
    "\u0002\u0002\u04fe\u0500\u0005b2\u0002\u04ff\u04fd\u0003\u0002\u0002",
    "\u0002\u0500\u0503\u0003\u0002\u0002\u0002\u0501\u04ff\u0003\u0002\u0002",
    "\u0002\u0501\u0502\u0003\u0002\u0002\u0002\u0502\u0510\u0003\u0002\u0002",
    "\u0002\u0503\u0501\u0003\u0002\u0002\u0002\u0504\u050e\u0007M\u0002",
    "\u0002\u0505\u050a\u0005`1\u0002\u0506\u0507\u0007\u0007\u0002\u0002",
    "\u0507\u0509\u0005`1\u0002\u0508\u0506\u0003\u0002\u0002\u0002\u0509",
    "\u050c\u0003\u0002\u0002\u0002\u050a\u0508\u0003\u0002\u0002\u0002\u050a",
    "\u050b\u0003\u0002\u0002\u0002\u050b\u050f\u0003\u0002\u0002\u0002\u050c",
    "\u050a\u0003\u0002\u0002\u0002\u050d\u050f\u0005V,\u0002\u050e\u0505",
    "\u0003\u0002\u0002\u0002\u050e\u050d\u0003\u0002\u0002\u0002\u050f\u0511",
    "\u0003\u0002\u0002\u0002\u0510\u0504\u0003\u0002\u0002\u0002\u0510\u0511",
    "\u0003\u0002\u0002\u0002\u0511\u0514\u0003\u0002\u0002\u0002\u0512\u0513",
    "\u0007\u0095\u0002\u0002\u0513\u0515\u0005D#\u0002\u0514\u0512\u0003",
    "\u0002\u0002\u0002\u0514\u0515\u0003\u0002\u0002\u0002\u0515\u0524\u0003",
    "\u0002\u0002\u0002\u0516\u0517\u0007P\u0002\u0002\u0517\u0518\u0007",
    "*\u0002\u0002\u0518\u051d\u0005D#\u0002\u0519\u051a\u0007\u0007\u0002",
    "\u0002\u051a\u051c\u0005D#\u0002\u051b\u0519\u0003\u0002\u0002\u0002",
    "\u051c\u051f\u0003\u0002\u0002\u0002\u051d\u051b\u0003\u0002\u0002\u0002",
    "\u051d\u051e\u0003\u0002\u0002\u0002\u051e\u0522\u0003\u0002\u0002\u0002",
    "\u051f\u051d\u0003\u0002\u0002\u0002\u0520\u0521\u0007Q\u0002\u0002",
    "\u0521\u0523\u0005D#\u0002\u0522\u0520\u0003\u0002\u0002\u0002\u0522",
    "\u0523\u0003\u0002\u0002\u0002\u0523\u0525\u0003\u0002\u0002\u0002\u0524",
    "\u0516\u0003\u0002\u0002\u0002\u0524\u0525\u0003\u0002\u0002\u0002\u0525",
    "\u0534\u0003\u0002\u0002\u0002\u0526\u0527\u0007\u00af\u0002\u0002\u0527",
    "\u0528\u0005\u00d2j\u0002\u0528\u0529\u0007#\u0002\u0002\u0529\u0531",
    "\u0005v<\u0002\u052a\u052b\u0007\u0007\u0002\u0002\u052b\u052c\u0005",
    "\u00d2j\u0002\u052c\u052d\u0007#\u0002\u0002\u052d\u052e\u0005v<\u0002",
    "\u052e\u0530\u0003\u0002\u0002\u0002\u052f\u052a\u0003\u0002\u0002\u0002",
    "\u0530\u0533\u0003\u0002\u0002\u0002\u0531\u052f\u0003\u0002\u0002\u0002",
    "\u0531\u0532\u0003\u0002\u0002\u0002\u0532\u0535\u0003\u0002\u0002\u0002",
    "\u0533\u0531\u0003\u0002\u0002\u0002\u0534\u0526\u0003\u0002\u0002\u0002",
    "\u0534\u0535\u0003\u0002\u0002\u0002\u0535\u0553\u0003\u0002\u0002\u0002",
    "\u0536\u0537\u0007\u0091\u0002\u0002\u0537\u0538\u0007\u0005\u0002\u0002",
    "\u0538\u053d\u0005D#\u0002\u0539\u053a\u0007\u0007\u0002\u0002\u053a",
    "\u053c\u0005D#\u0002\u053b\u0539\u0003\u0002\u0002\u0002\u053c\u053f",
    "\u0003\u0002\u0002\u0002\u053d\u053b\u0003\u0002\u0002\u0002\u053d\u053e",
    "\u0003\u0002\u0002\u0002\u053e\u0540\u0003\u0002\u0002\u0002\u053f\u053d",
    "\u0003\u0002\u0002\u0002\u0540\u054f\u0007\u0006\u0002\u0002\u0541\u0542",
    "\u0007\u0007\u0002\u0002\u0542\u0543\u0007\u0005\u0002\u0002\u0543\u0548",
    "\u0005D#\u0002\u0544\u0545\u0007\u0007\u0002\u0002\u0545\u0547\u0005",
    "D#\u0002\u0546\u0544\u0003\u0002\u0002\u0002\u0547\u054a\u0003\u0002",
    "\u0002\u0002\u0548\u0546\u0003\u0002\u0002\u0002\u0548\u0549\u0003\u0002",
    "\u0002\u0002\u0549\u054b\u0003\u0002\u0002\u0002\u054a\u0548\u0003\u0002",
    "\u0002\u0002\u054b\u054c\u0007\u0006\u0002\u0002\u054c\u054e\u0003\u0002",
    "\u0002\u0002\u054d\u0541\u0003\u0002\u0002\u0002\u054e\u0551\u0003\u0002",
    "\u0002\u0002\u054f\u054d\u0003\u0002\u0002\u0002\u054f\u0550\u0003\u0002",
    "\u0002\u0002\u0550\u0553\u0003\u0002\u0002\u0002\u0551\u054f\u0003\u0002",
    "\u0002\u0002\u0552\u04f8\u0003\u0002\u0002\u0002\u0552\u0536\u0003\u0002",
    "\u0002\u0002\u0553Y\u0003\u0002\u0002\u0002\u0554\u0555\u0005T+\u0002",
    "\u0555[\u0003\u0002\u0002\u0002\u0556\u0558\u0005\u0084C\u0002\u0557",
    "\u0556\u0003\u0002\u0002\u0002\u0557\u0558\u0003\u0002\u0002\u0002\u0558",
    "\u0559\u0003\u0002\u0002\u0002\u0559\u055b\u0005X-\u0002\u055a\u055c",
    "\u0005\u0086D\u0002\u055b\u055a\u0003\u0002\u0002\u0002\u055b\u055c",
    "\u0003\u0002\u0002\u0002\u055c\u055e\u0003\u0002\u0002\u0002\u055d\u055f",
    "\u0005\u0088E\u0002\u055e\u055d\u0003\u0002\u0002\u0002\u055e\u055f",
    "\u0003\u0002\u0002\u0002\u055f]\u0003\u0002\u0002\u0002\u0560\u0562",
    "\u0005\u0084C\u0002\u0561\u0560\u0003\u0002\u0002\u0002\u0561\u0562",
    "\u0003\u0002\u0002\u0002\u0562\u0563\u0003\u0002\u0002\u0002\u0563\u056d",
    "\u0005X-\u0002\u0564\u0566\u0007\u008c\u0002\u0002\u0565\u0567\u0007",
    "\u001f\u0002\u0002\u0566\u0565\u0003\u0002\u0002\u0002\u0566\u0567\u0003",
    "\u0002\u0002\u0002\u0567\u056b\u0003\u0002\u0002\u0002\u0568\u056b\u0007",
    "\\\u0002\u0002\u0569\u056b\u0007F\u0002\u0002\u056a\u0564\u0003\u0002",
    "\u0002\u0002\u056a\u0568\u0003\u0002\u0002\u0002\u056a\u0569\u0003\u0002",
    "\u0002\u0002\u056b\u056c\u0003\u0002\u0002\u0002\u056c\u056e\u0005X",
    "-\u0002\u056d\u056a\u0003\u0002\u0002\u0002\u056e\u056f\u0003\u0002",
    "\u0002\u0002\u056f\u056d\u0003\u0002\u0002\u0002\u056f\u0570\u0003\u0002",
    "\u0002\u0002\u0570\u0572\u0003\u0002\u0002\u0002\u0571\u0573\u0005\u0086",
    "D\u0002\u0572\u0571\u0003\u0002\u0002\u0002\u0572\u0573\u0003\u0002",
    "\u0002\u0002\u0573\u0575\u0003\u0002\u0002\u0002\u0574\u0576\u0005\u0088",
    "E\u0002\u0575\u0574\u0003\u0002\u0002\u0002\u0575\u0576\u0003\u0002",
    "\u0002\u0002\u0576_\u0003\u0002\u0002\u0002\u0577\u0578\u0005\u00b4",
    "[\u0002\u0578\u0579\u0007\u0004\u0002\u0002\u0579\u057b\u0003\u0002",
    "\u0002\u0002\u057a\u0577\u0003\u0002\u0002\u0002\u057a\u057b\u0003\u0002",
    "\u0002\u0002\u057b\u057c\u0003\u0002\u0002\u0002\u057c\u0581\u0005\u00b6",
    "\\\u0002\u057d\u057f\u0007#\u0002\u0002\u057e\u057d\u0003\u0002\u0002",
    "\u0002\u057e\u057f\u0003\u0002\u0002\u0002\u057f\u0580\u0003\u0002\u0002",
    "\u0002\u0580\u0582\u0005\u00ceh\u0002\u0581\u057e\u0003\u0002\u0002",
    "\u0002\u0581\u0582\u0003\u0002\u0002\u0002\u0582\u0588\u0003\u0002\u0002",
    "\u0002\u0583\u0584\u0007W\u0002\u0002\u0584\u0585\u0007*\u0002\u0002",
    "\u0585\u0589\u0005\u00c2b\u0002\u0586\u0587\u0007h\u0002\u0002\u0587",
    "\u0589\u0007W\u0002\u0002\u0588\u0583\u0003\u0002\u0002\u0002\u0588",
    "\u0586\u0003\u0002\u0002\u0002\u0588\u0589\u0003\u0002\u0002\u0002\u0589",
    "\u05b8\u0003\u0002\u0002\u0002\u058a\u058b\u0005\u00b4[\u0002\u058b",
    "\u058c\u0007\u0004\u0002\u0002\u058c\u058e\u0003\u0002\u0002\u0002\u058d",
    "\u058a\u0003\u0002\u0002\u0002\u058d\u058e\u0003\u0002\u0002\u0002\u058e",
    "\u058f\u0003\u0002\u0002\u0002\u058f\u0590\u0005\u00dep\u0002\u0590",
    "\u0591\u0007\u0005\u0002\u0002\u0591\u0596\u0005D#\u0002\u0592\u0593",
    "\u0007\u0007\u0002\u0002\u0593\u0595\u0005D#\u0002\u0594\u0592\u0003",
    "\u0002\u0002\u0002\u0595\u0598\u0003\u0002\u0002\u0002\u0596\u0594\u0003",
    "\u0002\u0002\u0002\u0596\u0597\u0003\u0002\u0002\u0002\u0597\u0599\u0003",
    "\u0002\u0002\u0002\u0598\u0596\u0003\u0002\u0002\u0002\u0599\u059e\u0007",
    "\u0006\u0002\u0002\u059a\u059c\u0007#\u0002\u0002\u059b\u059a\u0003",
    "\u0002\u0002\u0002\u059b\u059c\u0003\u0002\u0002\u0002\u059c\u059d\u0003",
    "\u0002\u0002\u0002\u059d\u059f\u0005\u00ceh\u0002\u059e\u059b\u0003",
    "\u0002\u0002\u0002\u059e\u059f\u0003\u0002\u0002\u0002\u059f\u05b8\u0003",
    "\u0002\u0002\u0002\u05a0\u05aa\u0007\u0005\u0002\u0002\u05a1\u05a6\u0005",
    "`1\u0002\u05a2\u05a3\u0007\u0007\u0002\u0002\u05a3\u05a5\u0005`1\u0002",
    "\u05a4\u05a2\u0003\u0002\u0002\u0002\u05a5\u05a8\u0003\u0002\u0002\u0002",
    "\u05a6\u05a4\u0003\u0002\u0002\u0002\u05a6\u05a7\u0003\u0002\u0002\u0002",
    "\u05a7\u05ab\u0003\u0002\u0002\u0002\u05a8\u05a6\u0003\u0002\u0002\u0002",
    "\u05a9\u05ab\u0005V,\u0002\u05aa\u05a1\u0003\u0002\u0002\u0002\u05aa",
    "\u05a9\u0003\u0002\u0002\u0002\u05ab\u05ac\u0003\u0002\u0002\u0002\u05ac",
    "\u05ad\u0007\u0006\u0002\u0002\u05ad\u05b8\u0003\u0002\u0002\u0002\u05ae",
    "\u05af\u0007\u0005\u0002\u0002\u05af\u05b0\u0005T+\u0002\u05b0\u05b5",
    "\u0007\u0006\u0002\u0002\u05b1\u05b3\u0007#\u0002\u0002\u05b2\u05b1",
    "\u0003\u0002\u0002\u0002\u05b2\u05b3\u0003\u0002\u0002\u0002\u05b3\u05b4",
    "\u0003\u0002\u0002\u0002\u05b4\u05b6\u0005\u00ceh\u0002\u05b5\u05b2",
    "\u0003\u0002\u0002\u0002\u05b5\u05b6\u0003\u0002\u0002\u0002\u05b6\u05b8",
    "\u0003\u0002\u0002\u0002\u05b7\u057a\u0003\u0002\u0002\u0002\u05b7\u058d",
    "\u0003\u0002\u0002\u0002\u05b7\u05a0\u0003\u0002\u0002\u0002\u05b7\u05ae",
    "\u0003\u0002\u0002\u0002\u05b8a\u0003\u0002\u0002\u0002\u05b9\u05c6",
    "\u0007\t\u0002\u0002\u05ba\u05bb\u0005\u00b6\\\u0002\u05bb\u05bc\u0007",
    "\u0004\u0002\u0002\u05bc\u05bd\u0007\t\u0002\u0002\u05bd\u05c6\u0003",
    "\u0002\u0002\u0002\u05be\u05c3\u0005D#\u0002\u05bf\u05c1\u0007#\u0002",
    "\u0002\u05c0\u05bf\u0003\u0002\u0002\u0002\u05c0\u05c1\u0003\u0002\u0002",
    "\u0002\u05c1\u05c2\u0003\u0002\u0002\u0002\u05c2\u05c4\u0005\u00acW",
    "\u0002\u05c3\u05c0\u0003\u0002\u0002\u0002\u05c3\u05c4\u0003\u0002\u0002",
    "\u0002\u05c4\u05c6\u0003\u0002\u0002\u0002\u05c5\u05b9\u0003\u0002\u0002",
    "\u0002\u05c5\u05ba\u0003\u0002\u0002\u0002\u05c5\u05be\u0003\u0002\u0002",
    "\u0002\u05c6c\u0003\u0002\u0002\u0002\u05c7\u05d5\u0007\u0007\u0002",
    "\u0002\u05c8\u05ca\u0007f\u0002\u0002\u05c9\u05c8\u0003\u0002\u0002",
    "\u0002\u05c9\u05ca\u0003\u0002\u0002\u0002\u05ca\u05d1\u0003\u0002\u0002",
    "\u0002\u05cb\u05cd\u0007b\u0002\u0002\u05cc\u05ce\u0007p\u0002\u0002",
    "\u05cd\u05cc\u0003\u0002\u0002\u0002\u05cd\u05ce\u0003\u0002\u0002\u0002",
    "\u05ce\u05d2\u0003\u0002\u0002\u0002\u05cf\u05d2\u0007Y\u0002\u0002",
    "\u05d0\u05d2\u00075\u0002\u0002\u05d1\u05cb\u0003\u0002\u0002\u0002",
    "\u05d1\u05cf\u0003\u0002\u0002\u0002\u05d1\u05d0\u0003\u0002\u0002\u0002",
    "\u05d1\u05d2\u0003\u0002\u0002\u0002\u05d2\u05d3\u0003\u0002\u0002\u0002",
    "\u05d3\u05d5\u0007`\u0002\u0002\u05d4\u05c7\u0003\u0002\u0002\u0002",
    "\u05d4\u05c9\u0003\u0002\u0002\u0002\u05d5e\u0003\u0002\u0002\u0002",
    "\u05d6\u05d7\u0007m\u0002\u0002\u05d7\u05e5\u0005D#\u0002\u05d8\u05d9",
    "\u0007\u008f\u0002\u0002\u05d9\u05da\u0007\u0005\u0002\u0002\u05da\u05df",
    "\u0005\u00bc_\u0002\u05db\u05dc\u0007\u0007\u0002\u0002\u05dc\u05de",
    "\u0005\u00bc_\u0002\u05dd\u05db\u0003\u0002\u0002\u0002\u05de\u05e1",
    "\u0003\u0002\u0002\u0002\u05df\u05dd\u0003\u0002\u0002\u0002\u05df\u05e0",
    "\u0003\u0002\u0002\u0002\u05e0\u05e2\u0003\u0002\u0002\u0002\u05e1\u05df",
    "\u0003\u0002\u0002\u0002\u05e2\u05e3\u0007\u0006\u0002\u0002\u05e3\u05e5",
    "\u0003\u0002\u0002\u0002\u05e4\u05d6\u0003\u0002\u0002\u0002\u05e4\u05d8",
    "\u0003\u0002\u0002\u0002\u05e5g\u0003\u0002\u0002\u0002\u05e6\u05e8",
    "\u0007\u008c\u0002\u0002\u05e7\u05e9\u0007\u001f\u0002\u0002\u05e8\u05e7",
    "\u0003\u0002\u0002\u0002\u05e8\u05e9\u0003\u0002\u0002\u0002\u05e9\u05ed",
    "\u0003\u0002\u0002\u0002\u05ea\u05ed\u0007\\\u0002\u0002\u05eb\u05ed",
    "\u0007F\u0002\u0002\u05ec\u05e6\u0003\u0002\u0002\u0002\u05ec\u05ea",
    "\u0003\u0002\u0002\u0002\u05ec\u05eb\u0003\u0002\u0002\u0002\u05edi",
    "\u0003\u0002\u0002\u0002\u05ee\u05f0\u00054\u001b\u0002\u05ef\u05ee",
    "\u0003\u0002\u0002\u0002\u05ef\u05f0\u0003\u0002\u0002\u0002\u05f0\u05f1",
    "\u0003\u0002\u0002\u0002\u05f1\u05f4\u0007\u008e\u0002\u0002\u05f2\u05f3",
    "\u0007n\u0002\u0002\u05f3\u05f5\t\n\u0002\u0002\u05f4\u05f2\u0003\u0002",
    "\u0002\u0002\u05f4\u05f5\u0003\u0002\u0002\u0002\u05f5\u05f6\u0003\u0002",
    "\u0002\u0002\u05f6\u05f7\u0005p9\u0002\u05f7\u05fa\u0007\u0084\u0002",
    "\u0002\u05f8\u05fb\u0005\u00bc_\u0002\u05f9\u05fb\u0005l7\u0002\u05fa",
    "\u05f8\u0003\u0002\u0002\u0002\u05fa\u05f9\u0003\u0002\u0002\u0002\u05fb",
    "\u05fc\u0003\u0002\u0002\u0002\u05fc\u05fd\u0007\b\u0002\u0002\u05fd",
    "\u0608\u0005D#\u0002\u05fe\u0601\u0007\u0007\u0002\u0002\u05ff\u0602",
    "\u0005\u00bc_\u0002\u0600\u0602\u0005l7\u0002\u0601\u05ff\u0003\u0002",
    "\u0002\u0002\u0601\u0600\u0003\u0002\u0002\u0002\u0602\u0603\u0003\u0002",
    "\u0002\u0002\u0603\u0604\u0007\b\u0002\u0002\u0604\u0605\u0005D#\u0002",
    "\u0605\u0607\u0003\u0002\u0002\u0002\u0606\u05fe\u0003\u0002\u0002\u0002",
    "\u0607\u060a\u0003\u0002\u0002\u0002\u0608\u0606\u0003\u0002\u0002\u0002",
    "\u0608\u0609\u0003\u0002\u0002\u0002\u0609\u060d\u0003\u0002\u0002\u0002",
    "\u060a\u0608\u0003\u0002\u0002\u0002\u060b\u060c\u0007\u0095\u0002\u0002",
    "\u060c\u060e\u0005D#\u0002\u060d\u060b\u0003\u0002\u0002\u0002\u060d",
    "\u060e\u0003\u0002\u0002\u0002\u060ek\u0003\u0002\u0002\u0002\u060f",
    "\u0610\u0007\u0005\u0002\u0002\u0610\u0615\u0005\u00bc_\u0002\u0611",
    "\u0612\u0007\u0007\u0002\u0002\u0612\u0614\u0005\u00bc_\u0002\u0613",
    "\u0611\u0003\u0002\u0002\u0002\u0614\u0617\u0003\u0002\u0002\u0002\u0615",
    "\u0613\u0003\u0002\u0002\u0002\u0615\u0616\u0003\u0002\u0002\u0002\u0616",
    "\u0618\u0003\u0002\u0002\u0002\u0617\u0615\u0003\u0002\u0002\u0002\u0618",
    "\u0619\u0007\u0006\u0002\u0002\u0619m\u0003\u0002\u0002\u0002\u061a",
    "\u061c\u00054\u001b\u0002\u061b\u061a\u0003\u0002\u0002\u0002\u061b",
    "\u061c\u0003\u0002\u0002\u0002\u061c\u061d\u0003\u0002\u0002\u0002\u061d",
    "\u0620\u0007\u008e\u0002\u0002\u061e\u061f\u0007n\u0002\u0002\u061f",
    "\u0621\t\n\u0002\u0002\u0620\u061e\u0003\u0002\u0002\u0002\u0620\u0621",
    "\u0003\u0002\u0002\u0002\u0621\u0622\u0003\u0002\u0002\u0002\u0622\u0623",
    "\u0005p9\u0002\u0623\u0626\u0007\u0084\u0002\u0002\u0624\u0627\u0005",
    "\u00bc_\u0002\u0625\u0627\u0005l7\u0002\u0626\u0624\u0003\u0002\u0002",
    "\u0002\u0626\u0625\u0003\u0002\u0002\u0002\u0627\u0628\u0003\u0002\u0002",
    "\u0002\u0628\u0629\u0007\b\u0002\u0002\u0629\u0634\u0005D#\u0002\u062a",
    "\u062d\u0007\u0007\u0002\u0002\u062b\u062e\u0005\u00bc_\u0002\u062c",
    "\u062e\u0005l7\u0002\u062d\u062b\u0003\u0002\u0002\u0002\u062d\u062c",
    "\u0003\u0002\u0002\u0002\u062e\u062f\u0003\u0002\u0002\u0002\u062f\u0630",
    "\u0007\b\u0002\u0002\u0630\u0631\u0005D#\u0002\u0631\u0633\u0003\u0002",
    "\u0002\u0002\u0632\u062a\u0003\u0002\u0002\u0002\u0633\u0636\u0003\u0002",
    "\u0002\u0002\u0634\u0632\u0003\u0002\u0002\u0002\u0634\u0635\u0003\u0002",
    "\u0002\u0002\u0635\u0639\u0003\u0002\u0002\u0002\u0636\u0634\u0003\u0002",
    "\u0002\u0002\u0637\u0638\u0007\u0095\u0002\u0002\u0638\u063a\u0005D",
    "#\u0002\u0639\u0637\u0003\u0002\u0002\u0002\u0639\u063a\u0003\u0002",
    "\u0002\u0002\u063a\u063f\u0003\u0002\u0002\u0002\u063b\u063d\u0005\u0086",
    "D\u0002\u063c\u063b\u0003\u0002\u0002\u0002\u063c\u063d\u0003\u0002",
    "\u0002\u0002\u063d\u063e\u0003\u0002\u0002\u0002\u063e\u0640\u0005\u0088",
    "E\u0002\u063f\u063c\u0003\u0002\u0002\u0002\u063f\u0640\u0003\u0002",
    "\u0002\u0002\u0640o\u0003\u0002\u0002\u0002\u0641\u0642\u0005\u00b4",
    "[\u0002\u0642\u0643\u0007\u0004\u0002\u0002\u0643\u0645\u0003\u0002",
    "\u0002\u0002\u0644\u0641\u0003\u0002\u0002\u0002\u0644\u0645\u0003\u0002",
    "\u0002\u0002\u0645\u0646\u0003\u0002\u0002\u0002\u0646\u0649\u0005\u00b6",
    "\\\u0002\u0647\u0648\u0007#\u0002\u0002\u0648\u064a\u0005\u00d4k\u0002",
    "\u0649\u0647\u0003\u0002\u0002\u0002\u0649\u064a\u0003\u0002\u0002\u0002",
    "\u064a\u0650\u0003\u0002\u0002\u0002\u064b\u064c\u0007W\u0002\u0002",
    "\u064c\u064d\u0007*\u0002\u0002\u064d\u0651\u0005\u00c2b\u0002\u064e",
    "\u064f\u0007h\u0002\u0002\u064f\u0651\u0007W\u0002\u0002\u0650\u064b",
    "\u0003\u0002\u0002\u0002\u0650\u064e\u0003\u0002\u0002\u0002\u0650\u0651",
    "\u0003\u0002\u0002\u0002\u0651q\u0003\u0002\u0002\u0002\u0652\u0654",
    "\u0007\u0090\u0002\u0002\u0653\u0655\u0005\u00b4[\u0002\u0654\u0653",
    "\u0003\u0002\u0002\u0002\u0654\u0655\u0003\u0002\u0002\u0002\u0655\u0658",
    "\u0003\u0002\u0002\u0002\u0656\u0657\u0007]\u0002\u0002\u0657\u0659",
    "\u0005\u00d6l\u0002\u0658\u0656\u0003\u0002\u0002\u0002\u0658\u0659",
    "\u0003\u0002\u0002\u0002\u0659s\u0003\u0002\u0002\u0002\u065a\u065b",
    "\u0007\u00b3\u0002\u0002\u065b\u065c\u0007\u0005\u0002\u0002\u065c\u065d",
    "\u0007\u0095\u0002\u0002\u065d\u065e\u0005D#\u0002\u065e\u065f\u0007",
    "\u0006\u0002\u0002\u065fu\u0003\u0002\u0002\u0002\u0660\u0662\u0007",
    "\u0005\u0002\u0002\u0661\u0663\u0005\u00d8m\u0002\u0662\u0661\u0003",
    "\u0002\u0002\u0002\u0662\u0663\u0003\u0002\u0002\u0002\u0663\u066e\u0003",
    "\u0002\u0002\u0002\u0664\u0665\u0007\u009a\u0002\u0002\u0665\u0666\u0007",
    "*\u0002\u0002\u0666\u066b\u0005D#\u0002\u0667\u0668\u0007\u0007\u0002",
    "\u0002\u0668\u066a\u0005D#\u0002\u0669\u0667\u0003\u0002\u0002\u0002",
    "\u066a\u066d\u0003\u0002\u0002\u0002\u066b\u0669\u0003\u0002\u0002\u0002",
    "\u066b\u066c\u0003\u0002\u0002\u0002\u066c\u066f\u0003\u0002\u0002\u0002",
    "\u066d\u066b\u0003\u0002\u0002\u0002\u066e\u0664\u0003\u0002\u0002\u0002",
    "\u066e\u066f\u0003\u0002\u0002\u0002\u066f\u0670\u0003\u0002\u0002\u0002",
    "\u0670\u0671\u0007o\u0002\u0002\u0671\u0672\u0007*\u0002\u0002\u0672",
    "\u0677\u0005\u008aF\u0002\u0673\u0674\u0007\u0007\u0002\u0002\u0674",
    "\u0676\u0005\u008aF\u0002\u0675\u0673\u0003\u0002\u0002\u0002\u0676",
    "\u0679\u0003\u0002\u0002\u0002\u0677\u0675\u0003\u0002\u0002\u0002\u0677",
    "\u0678\u0003\u0002\u0002\u0002\u0678\u067b\u0003\u0002\u0002\u0002\u0679",
    "\u0677\u0003\u0002\u0002\u0002\u067a\u067c\u0005z>\u0002\u067b\u067a",
    "\u0003\u0002\u0002\u0002\u067b\u067c\u0003\u0002\u0002\u0002\u067c\u067d",
    "\u0003\u0002\u0002\u0002\u067d\u067e\u0007\u0006\u0002\u0002\u067ew",
    "\u0003\u0002\u0002\u0002\u067f\u06a1\u0007\u0099\u0002\u0002\u0680\u06a2",
    "\u0005\u00d2j\u0002\u0681\u0683\u0007\u0005\u0002\u0002\u0682\u0684",
    "\u0005\u00d8m\u0002\u0683\u0682\u0003\u0002\u0002\u0002\u0683\u0684",
    "\u0003\u0002\u0002\u0002\u0684\u068f\u0003\u0002\u0002\u0002\u0685\u0686",
    "\u0007\u009a\u0002\u0002\u0686\u0687\u0007*\u0002\u0002\u0687\u068c",
    "\u0005D#\u0002\u0688\u0689\u0007\u0007\u0002\u0002\u0689\u068b\u0005",
    "D#\u0002\u068a\u0688\u0003\u0002\u0002\u0002\u068b\u068e\u0003\u0002",
    "\u0002\u0002\u068c\u068a\u0003\u0002\u0002\u0002\u068c\u068d\u0003\u0002",
    "\u0002\u0002\u068d\u0690\u0003\u0002\u0002\u0002\u068e\u068c\u0003\u0002",
    "\u0002\u0002\u068f\u0685\u0003\u0002\u0002\u0002\u068f\u0690\u0003\u0002",
    "\u0002\u0002\u0690\u069b\u0003\u0002\u0002\u0002\u0691\u0692\u0007o",
    "\u0002\u0002\u0692\u0693\u0007*\u0002\u0002\u0693\u0698\u0005\u008a",
    "F\u0002\u0694\u0695\u0007\u0007\u0002\u0002\u0695\u0697\u0005\u008a",
    "F\u0002\u0696\u0694\u0003\u0002\u0002\u0002\u0697\u069a\u0003\u0002",
    "\u0002\u0002\u0698\u0696\u0003\u0002\u0002\u0002\u0698\u0699\u0003\u0002",
    "\u0002\u0002\u0699\u069c\u0003\u0002\u0002\u0002\u069a\u0698\u0003\u0002",
    "\u0002\u0002\u069b\u0691\u0003\u0002\u0002\u0002\u069b\u069c\u0003\u0002",
    "\u0002\u0002\u069c\u069e\u0003\u0002\u0002\u0002\u069d\u069f\u0005z",
    ">\u0002\u069e\u069d\u0003\u0002\u0002\u0002\u069e\u069f\u0003\u0002",
    "\u0002\u0002\u069f\u06a0\u0003\u0002\u0002\u0002\u06a0\u06a2\u0007\u0006",
    "\u0002\u0002\u06a1\u0680\u0003\u0002\u0002\u0002\u06a1\u0681\u0003\u0002",
    "\u0002\u0002\u06a2y\u0003\u0002\u0002\u0002\u06a3\u06ab\u0005|?\u0002",
    "\u06a4\u06a5\u0007\u00b5\u0002\u0002\u06a5\u06a6\u0007g\u0002\u0002",
    "\u06a6\u06ac\u0007\u00b7\u0002\u0002\u06a7\u06a8\u0007\u009e\u0002\u0002",
    "\u06a8\u06ac\u0007\u0080\u0002\u0002\u06a9\u06ac\u0007P\u0002\u0002",
    "\u06aa\u06ac\u0007\u00b6\u0002\u0002\u06ab\u06a4\u0003\u0002\u0002\u0002",
    "\u06ab\u06a7\u0003\u0002\u0002\u0002\u06ab\u06a9\u0003\u0002\u0002\u0002",
    "\u06ab\u06aa\u0003\u0002\u0002\u0002\u06ab\u06ac\u0003\u0002\u0002\u0002",
    "\u06ac{\u0003\u0002\u0002\u0002\u06ad\u06b4\t\u0013\u0002\u0002\u06ae",
    "\u06b5\u0005\u0092J\u0002\u06af\u06b0\u0007)\u0002\u0002\u06b0\u06b1",
    "\u0005\u008eH\u0002\u06b1\u06b2\u0007\"\u0002\u0002\u06b2\u06b3\u0005",
    "\u0090I\u0002\u06b3\u06b5\u0003\u0002\u0002\u0002\u06b4\u06ae\u0003",
    "\u0002\u0002\u0002\u06b4\u06af\u0003\u0002\u0002\u0002\u06b5}\u0003",
    "\u0002\u0002\u0002\u06b6\u06b7\u0005\u00dan\u0002\u06b7\u06c1\u0007",
    "\u0005\u0002\u0002\u06b8\u06bd\u0005D#\u0002\u06b9\u06ba\u0007\u0007",
    "\u0002\u0002\u06ba\u06bc\u0005D#\u0002\u06bb\u06b9\u0003\u0002\u0002",
    "\u0002\u06bc\u06bf\u0003\u0002\u0002\u0002\u06bd\u06bb\u0003\u0002\u0002",
    "\u0002\u06bd\u06be\u0003\u0002\u0002\u0002\u06be\u06c2\u0003\u0002\u0002",
    "\u0002\u06bf\u06bd\u0003\u0002\u0002\u0002\u06c0\u06c2\u0007\t\u0002",
    "\u0002\u06c1\u06b8\u0003\u0002\u0002\u0002\u06c1\u06c0\u0003\u0002\u0002",
    "\u0002\u06c2\u06c3\u0003\u0002\u0002\u0002\u06c3\u06c4\u0007\u0006\u0002",
    "\u0002\u06c4\u007f\u0003\u0002\u0002\u0002\u06c5\u06c6\u0005\u00dco",
    "\u0002\u06c6\u06d3\u0007\u0005\u0002\u0002\u06c7\u06c9\u0007@\u0002",
    "\u0002\u06c8\u06c7\u0003\u0002\u0002\u0002\u06c8\u06c9\u0003\u0002\u0002",
    "\u0002\u06c9\u06ca\u0003\u0002\u0002\u0002\u06ca\u06cf\u0005D#\u0002",
    "\u06cb\u06cc\u0007\u0007\u0002\u0002\u06cc\u06ce\u0005D#\u0002\u06cd",
    "\u06cb\u0003\u0002\u0002\u0002\u06ce\u06d1\u0003\u0002\u0002\u0002\u06cf",
    "\u06cd\u0003\u0002\u0002\u0002\u06cf\u06d0\u0003\u0002\u0002\u0002\u06d0",
    "\u06d4\u0003\u0002\u0002\u0002\u06d1\u06cf\u0003\u0002\u0002\u0002\u06d2",
    "\u06d4\u0007\t\u0002\u0002\u06d3\u06c8\u0003\u0002\u0002\u0002\u06d3",
    "\u06d2\u0003\u0002\u0002\u0002\u06d3\u06d4\u0003\u0002\u0002\u0002\u06d4",
    "\u06d5\u0003\u0002\u0002\u0002\u06d5\u06d7\u0007\u0006\u0002\u0002\u06d6",
    "\u06d8\u0005t;\u0002\u06d7\u06d6\u0003\u0002\u0002\u0002\u06d7\u06d8",
    "\u0003\u0002\u0002\u0002\u06d8\u0081\u0003\u0002\u0002\u0002\u06d9\u06da",
    "\u0005\u0094K\u0002\u06da\u06e4\u0007\u0005\u0002\u0002\u06db\u06e0",
    "\u0005D#\u0002\u06dc\u06dd\u0007\u0007\u0002\u0002\u06dd\u06df\u0005",
    "D#\u0002\u06de\u06dc\u0003\u0002\u0002\u0002\u06df\u06e2\u0003\u0002",
    "\u0002\u0002\u06e0\u06de\u0003\u0002\u0002\u0002\u06e0\u06e1\u0003\u0002",
    "\u0002\u0002\u06e1\u06e5\u0003\u0002\u0002\u0002\u06e2\u06e0\u0003\u0002",
    "\u0002\u0002\u06e3\u06e5\u0007\t\u0002\u0002\u06e4\u06db\u0003\u0002",
    "\u0002\u0002\u06e4\u06e3\u0003\u0002\u0002\u0002\u06e4\u06e5\u0003\u0002",
    "\u0002\u0002\u06e5\u06e6\u0003\u0002\u0002\u0002\u06e6\u06e8\u0007\u0006",
    "\u0002\u0002\u06e7\u06e9\u0005t;\u0002\u06e8\u06e7\u0003\u0002\u0002",
    "\u0002\u06e8\u06e9\u0003\u0002\u0002\u0002\u06e9\u06ea\u0003\u0002\u0002",
    "\u0002\u06ea\u06ed\u0007\u0099\u0002\u0002\u06eb\u06ee\u0005v<\u0002",
    "\u06ec\u06ee\u0005\u00d2j\u0002\u06ed\u06eb\u0003\u0002\u0002\u0002",
    "\u06ed\u06ec\u0003\u0002\u0002\u0002\u06ee\u0083\u0003\u0002\u0002\u0002",
    "\u06ef\u06f1\u0007\u0096\u0002\u0002\u06f0\u06f2\u0007v\u0002\u0002",
    "\u06f1\u06f0\u0003\u0002\u0002\u0002\u06f1\u06f2\u0003\u0002\u0002\u0002",
    "\u06f2\u06f3\u0003\u0002\u0002\u0002\u06f3\u06f8\u0005:\u001e\u0002",
    "\u06f4\u06f5\u0007\u0007\u0002\u0002\u06f5\u06f7\u0005:\u001e\u0002",
    "\u06f6\u06f4\u0003\u0002\u0002\u0002\u06f7\u06fa\u0003\u0002\u0002\u0002",
    "\u06f8\u06f6\u0003\u0002\u0002\u0002\u06f8\u06f9\u0003\u0002\u0002\u0002",
    "\u06f9\u0085\u0003\u0002\u0002\u0002\u06fa\u06f8\u0003\u0002\u0002\u0002",
    "\u06fb\u06fc\u0007o\u0002\u0002\u06fc\u06fd\u0007*\u0002\u0002\u06fd",
    "\u0702\u0005\u008aF\u0002\u06fe\u06ff\u0007\u0007\u0002\u0002\u06ff",
    "\u0701\u0005\u008aF\u0002\u0700\u06fe\u0003\u0002\u0002\u0002\u0701",
    "\u0704\u0003\u0002\u0002\u0002\u0702\u0700\u0003\u0002\u0002\u0002\u0702",
    "\u0703\u0003\u0002\u0002\u0002\u0703\u0087\u0003\u0002\u0002\u0002\u0704",
    "\u0702\u0003\u0002\u0002\u0002\u0705\u0706\u0007d\u0002\u0002\u0706",
    "\u0709\u0005D#\u0002\u0707\u0708\t\u0014\u0002\u0002\u0708\u070a\u0005",
    "D#\u0002\u0709\u0707\u0003\u0002\u0002\u0002\u0709\u070a\u0003\u0002",
    "\u0002\u0002\u070a\u0089\u0003\u0002\u0002\u0002\u070b\u070e\u0005D",
    "#\u0002\u070c\u070d\u0007/\u0002\u0002\u070d\u070f\u0005\u00be`\u0002",
    "\u070e\u070c\u0003\u0002\u0002\u0002\u070e\u070f\u0003\u0002\u0002\u0002",
    "\u070f\u0711\u0003\u0002\u0002\u0002\u0710\u0712\u0005\u008cG\u0002",
    "\u0711\u0710\u0003\u0002\u0002\u0002\u0711\u0712\u0003\u0002\u0002\u0002",
    "\u0712\u0715\u0003\u0002\u0002\u0002\u0713\u0714\u0007\u00b0\u0002\u0002",
    "\u0714\u0716\t\u0015\u0002\u0002\u0715\u0713\u0003\u0002\u0002\u0002",
    "\u0715\u0716\u0003\u0002\u0002\u0002\u0716\u008b\u0003\u0002\u0002\u0002",
    "\u0717\u0718\t\u0016\u0002\u0002\u0718\u008d\u0003\u0002\u0002\u0002",
    "\u0719\u071a\u0005D#\u0002\u071a\u071b\u0007\u009c\u0002\u0002\u071b",
    "\u0724\u0003\u0002\u0002\u0002\u071c\u071d\u0005D#\u0002\u071d\u071e",
    "\u0007\u009f\u0002\u0002\u071e\u0724\u0003\u0002\u0002\u0002\u071f\u0720",
    "\u0007\u009e\u0002\u0002\u0720\u0724\u0007\u0080\u0002\u0002\u0721\u0722",
    "\u0007\u009d\u0002\u0002\u0722\u0724\u0007\u009c\u0002\u0002\u0723\u0719",
    "\u0003\u0002\u0002\u0002\u0723\u071c\u0003\u0002\u0002\u0002\u0723\u071f",
    "\u0003\u0002\u0002\u0002\u0723\u0721\u0003\u0002\u0002\u0002\u0724\u008f",
    "\u0003\u0002\u0002\u0002\u0725\u0726\u0005D#\u0002\u0726\u0727\u0007",
    "\u009c\u0002\u0002\u0727\u0730\u0003\u0002\u0002\u0002\u0728\u0729\u0005",
    "D#\u0002\u0729\u072a\u0007\u009f\u0002\u0002\u072a\u0730\u0003\u0002",
    "\u0002\u0002\u072b\u072c\u0007\u009e\u0002\u0002\u072c\u0730\u0007\u0080",
    "\u0002\u0002\u072d\u072e\u0007\u009d\u0002\u0002\u072e\u0730\u0007\u009f",
    "\u0002\u0002\u072f\u0725\u0003\u0002\u0002\u0002\u072f\u0728\u0003\u0002",
    "\u0002\u0002\u072f\u072b\u0003\u0002\u0002\u0002\u072f\u072d\u0003\u0002",
    "\u0002\u0002\u0730\u0091\u0003\u0002\u0002\u0002\u0731\u0732\u0005D",
    "#\u0002\u0732\u0733\u0007\u009c\u0002\u0002\u0733\u0739\u0003\u0002",
    "\u0002\u0002\u0734\u0735\u0007\u009d\u0002\u0002\u0735\u0739\u0007\u009c",
    "\u0002\u0002\u0736\u0737\u0007\u009e\u0002\u0002\u0737\u0739\u0007\u0080",
    "\u0002\u0002\u0738\u0731\u0003\u0002\u0002\u0002\u0738\u0734\u0003\u0002",
    "\u0002\u0002\u0738\u0736\u0003\u0002\u0002\u0002\u0739\u0093\u0003\u0002",
    "\u0002\u0002\u073a\u073b\t\u0017\u0002\u0002\u073b\u073c\u0007\u0005",
    "\u0002\u0002\u073c\u073d\u0005D#\u0002\u073d\u073e\u0007\u0006\u0002",
    "\u0002\u073e\u073f\u0007\u0099\u0002\u0002\u073f\u0741\u0007\u0005\u0002",
    "\u0002\u0740\u0742\u0005\u009aN\u0002\u0741\u0740\u0003\u0002\u0002",
    "\u0002\u0741\u0742\u0003\u0002\u0002\u0002\u0742\u0743\u0003\u0002\u0002",
    "\u0002\u0743\u0745\u0005\u009eP\u0002\u0744\u0746\u0005|?\u0002\u0745",
    "\u0744\u0003\u0002\u0002\u0002\u0745\u0746\u0003\u0002\u0002\u0002\u0746",
    "\u0747\u0003\u0002\u0002\u0002\u0747\u0748\u0007\u0006\u0002\u0002\u0748",
    "\u0790\u0003\u0002\u0002\u0002\u0749\u074a\t\u0018\u0002\u0002\u074a",
    "\u074b\u0007\u0005\u0002\u0002\u074b\u074c\u0007\u0006\u0002\u0002\u074c",
    "\u074d\u0007\u0099\u0002\u0002\u074d\u074f\u0007\u0005\u0002\u0002\u074e",
    "\u0750\u0005\u009aN\u0002\u074f\u074e\u0003\u0002\u0002\u0002\u074f",
    "\u0750\u0003\u0002\u0002\u0002\u0750\u0752\u0003\u0002\u0002\u0002\u0751",
    "\u0753\u0005\u009cO\u0002\u0752\u0751\u0003\u0002\u0002\u0002\u0752",
    "\u0753\u0003\u0002\u0002\u0002\u0753\u0754\u0003\u0002\u0002\u0002\u0754",
    "\u0790\u0007\u0006\u0002\u0002\u0755\u0756\t\u0019\u0002\u0002\u0756",
    "\u0757\u0007\u0005\u0002\u0002\u0757\u0758\u0007\u0006\u0002\u0002\u0758",
    "\u0759\u0007\u0099\u0002\u0002\u0759\u075b\u0007\u0005\u0002\u0002\u075a",
    "\u075c\u0005\u009aN\u0002\u075b\u075a\u0003\u0002\u0002\u0002\u075b",
    "\u075c\u0003\u0002\u0002\u0002\u075c\u075d\u0003\u0002\u0002\u0002\u075d",
    "\u075e\u0005\u009eP\u0002\u075e\u075f\u0007\u0006\u0002\u0002\u075f",
    "\u0790\u0003\u0002\u0002\u0002\u0760\u0761\t\u001a\u0002\u0002\u0761",
    "\u0762\u0007\u0005\u0002\u0002\u0762\u0764\u0005D#\u0002\u0763\u0765",
    "\u0005\u0096L\u0002\u0764\u0763\u0003\u0002\u0002\u0002\u0764\u0765",
    "\u0003\u0002\u0002\u0002\u0765\u0767\u0003\u0002\u0002\u0002\u0766\u0768",
    "\u0005\u0098M\u0002\u0767\u0766\u0003\u0002\u0002\u0002\u0767\u0768",
    "\u0003\u0002\u0002\u0002\u0768\u0769\u0003\u0002\u0002\u0002\u0769\u076a",
    "\u0007\u0006\u0002\u0002\u076a\u076b\u0007\u0099\u0002\u0002\u076b\u076d",
    "\u0007\u0005\u0002\u0002\u076c\u076e\u0005\u009aN\u0002\u076d\u076c",
    "\u0003\u0002\u0002\u0002\u076d\u076e\u0003\u0002\u0002\u0002\u076e\u076f",
    "\u0003\u0002\u0002\u0002\u076f\u0770\u0005\u009eP\u0002\u0770\u0771",
    "\u0007\u0006\u0002\u0002\u0771\u0790\u0003\u0002\u0002\u0002\u0772\u0773",
    "\u0007\u00a5\u0002\u0002\u0773\u0774\u0007\u0005\u0002\u0002\u0774\u0775",
    "\u0005D#\u0002\u0775\u0776\u0007\u0007\u0002\u0002\u0776\u0777\u0005",
    "&\u0014\u0002\u0777\u0778\u0007\u0006\u0002\u0002\u0778\u0779\u0007",
    "\u0099\u0002\u0002\u0779\u077b\u0007\u0005\u0002\u0002\u077a\u077c\u0005",
    "\u009aN\u0002\u077b\u077a\u0003\u0002\u0002\u0002\u077b\u077c\u0003",
    "\u0002\u0002\u0002\u077c\u077d\u0003\u0002\u0002\u0002\u077d\u077f\u0005",
    "\u009eP\u0002\u077e\u0780\u0005|?\u0002\u077f\u077e\u0003\u0002\u0002",
    "\u0002\u077f\u0780\u0003\u0002\u0002\u0002\u0780\u0781\u0003\u0002\u0002",
    "\u0002\u0781\u0782\u0007\u0006\u0002\u0002\u0782\u0790\u0003\u0002\u0002",
    "\u0002\u0783\u0784\u0007\u00a6\u0002\u0002\u0784\u0785\u0007\u0005\u0002",
    "\u0002\u0785\u0786\u0005D#\u0002\u0786\u0787\u0007\u0006\u0002\u0002",
    "\u0787\u0788\u0007\u0099\u0002\u0002\u0788\u078a\u0007\u0005\u0002\u0002",
    "\u0789\u078b\u0005\u009aN\u0002\u078a\u0789\u0003\u0002\u0002\u0002",
    "\u078a\u078b\u0003\u0002\u0002\u0002\u078b\u078c\u0003\u0002\u0002\u0002",
    "\u078c\u078d\u0005\u009eP\u0002\u078d\u078e\u0007\u0006\u0002\u0002",
    "\u078e\u0790\u0003\u0002\u0002\u0002\u078f\u073a\u0003\u0002\u0002\u0002",
    "\u078f\u0749\u0003\u0002\u0002\u0002\u078f\u0755\u0003\u0002\u0002\u0002",
    "\u078f\u0760\u0003\u0002\u0002\u0002\u078f\u0772\u0003\u0002\u0002\u0002",
    "\u078f\u0783\u0003\u0002\u0002\u0002\u0790\u0095\u0003\u0002\u0002\u0002",
    "\u0791\u0792\u0007\u0007\u0002\u0002\u0792\u0793\u0005&\u0014\u0002",
    "\u0793\u0097\u0003\u0002\u0002\u0002\u0794\u0795\u0007\u0007\u0002\u0002",
    "\u0795\u0796\u0005&\u0014\u0002\u0796\u0099\u0003\u0002\u0002\u0002",
    "\u0797\u0798\u0007\u009a\u0002\u0002\u0798\u079a\u0007*\u0002\u0002",
    "\u0799\u079b\u0005D#\u0002\u079a\u0799\u0003\u0002\u0002\u0002\u079b",
    "\u079c\u0003\u0002\u0002\u0002\u079c\u079a\u0003\u0002\u0002\u0002\u079c",
    "\u079d\u0003\u0002\u0002\u0002\u079d\u009b\u0003\u0002\u0002\u0002\u079e",
    "\u079f\u0007o\u0002\u0002\u079f\u07a1\u0007*\u0002\u0002\u07a0\u07a2",
    "\u0005D#\u0002\u07a1\u07a0\u0003\u0002\u0002\u0002\u07a2\u07a3\u0003",
    "\u0002\u0002\u0002\u07a3\u07a1\u0003\u0002\u0002\u0002\u07a3\u07a4\u0003",
    "\u0002\u0002\u0002\u07a4\u009d\u0003\u0002\u0002\u0002\u07a5\u07a6\u0007",
    "o\u0002\u0002\u07a6\u07a7\u0007*\u0002\u0002\u07a7\u07a8\u0005\u009e",
    "P\u0002\u07a8\u009f\u0003\u0002\u0002\u0002\u07a9\u07ab\u0005D#\u0002",
    "\u07aa\u07ac\u0005\u008cG\u0002\u07ab\u07aa\u0003\u0002\u0002\u0002",
    "\u07ab\u07ac\u0003\u0002\u0002\u0002\u07ac\u07b4\u0003\u0002\u0002\u0002",
    "\u07ad\u07ae\u0007\u0007\u0002\u0002\u07ae\u07b0\u0005D#\u0002\u07af",
    "\u07b1\u0005\u008cG\u0002\u07b0\u07af\u0003\u0002\u0002\u0002\u07b0",
    "\u07b1\u0003\u0002\u0002\u0002\u07b1\u07b3\u0003\u0002\u0002\u0002\u07b2",
    "\u07ad\u0003\u0002\u0002\u0002\u07b3\u07b6\u0003\u0002\u0002\u0002\u07b4",
    "\u07b2\u0003\u0002\u0002\u0002\u07b4\u07b5\u0003\u0002\u0002\u0002\u07b5",
    "\u00a1\u0003\u0002\u0002\u0002\u07b6\u07b4\u0003\u0002\u0002\u0002\u07b7",
    "\u07b8\u0005T+\u0002\u07b8\u00a3\u0003\u0002\u0002\u0002\u07b9\u07ba",
    "\u0005T+\u0002\u07ba\u00a5\u0003\u0002\u0002\u0002\u07bb\u07bc\t\u001b",
    "\u0002\u0002\u07bc\u00a7\u0003\u0002\u0002\u0002\u07bd\u07be\u0007\u00bd",
    "\u0002\u0002\u07be\u00a9\u0003\u0002\u0002\u0002\u07bf\u07c2\u0005D",
    "#\u0002\u07c0\u07c2\u0005 \u0011\u0002\u07c1\u07bf\u0003\u0002\u0002",
    "\u0002\u07c1\u07c0\u0003\u0002\u0002\u0002\u07c2\u00ab\u0003\u0002\u0002",
    "\u0002\u07c3\u07c4\t\u001c\u0002\u0002\u07c4\u00ad\u0003\u0002\u0002",
    "\u0002\u07c5\u07c6\t\u001d\u0002\u0002\u07c6\u00af\u0003\u0002\u0002",
    "\u0002\u07c7\u07c8\u0005\u00e0q\u0002\u07c8\u00b1\u0003\u0002\u0002",
    "\u0002\u07c9\u07ca\u0005\u00e0q\u0002\u07ca\u00b3\u0003\u0002\u0002",
    "\u0002\u07cb\u07cc\u0005\u00e0q\u0002\u07cc\u00b5\u0003\u0002\u0002",
    "\u0002\u07cd\u07ce\u0005\u00e0q\u0002\u07ce\u00b7\u0003\u0002\u0002",
    "\u0002\u07cf\u07d0\u0005\u00e0q\u0002\u07d0\u00b9\u0003\u0002\u0002",
    "\u0002\u07d1\u07d2\u0005\u00e0q\u0002\u07d2\u00bb\u0003\u0002\u0002",
    "\u0002\u07d3\u07d4\u0005\u00e0q\u0002\u07d4\u00bd\u0003\u0002\u0002",
    "\u0002\u07d5\u07d6\u0005\u00e0q\u0002\u07d6\u00bf\u0003\u0002\u0002",
    "\u0002\u07d7\u07d8\u0005\u00e0q\u0002\u07d8\u00c1\u0003\u0002\u0002",
    "\u0002\u07d9\u07da\u0005\u00e0q\u0002\u07da\u00c3\u0003\u0002\u0002",
    "\u0002\u07db\u07dc\u0005\u00e0q\u0002\u07dc\u00c5\u0003\u0002\u0002",
    "\u0002\u07dd\u07de\u0005\u00e0q\u0002\u07de\u00c7\u0003\u0002\u0002",
    "\u0002\u07df\u07e0\u0005\u00e0q\u0002\u07e0\u00c9\u0003\u0002\u0002",
    "\u0002\u07e1\u07e2\u0005\u00e0q\u0002\u07e2\u00cb\u0003\u0002\u0002",
    "\u0002\u07e3\u07e4\u0005\u00e0q\u0002\u07e4\u00cd\u0003\u0002\u0002",
    "\u0002\u07e5\u07e6\u0005\u00e0q\u0002\u07e6\u00cf\u0003\u0002\u0002",
    "\u0002\u07e7\u07e8\u0005\u00e0q\u0002\u07e8\u00d1\u0003\u0002\u0002",
    "\u0002\u07e9\u07ea\u0005\u00e0q\u0002\u07ea\u00d3\u0003\u0002\u0002",
    "\u0002\u07eb\u07ec\u0005\u00e0q\u0002\u07ec\u00d5\u0003\u0002\u0002",
    "\u0002\u07ed\u07ee\u0005\u00e0q\u0002\u07ee\u00d7\u0003\u0002\u0002",
    "\u0002\u07ef\u07f0\u0005\u00e0q\u0002\u07f0\u00d9\u0003\u0002\u0002",
    "\u0002\u07f1\u07f2\u0005\u00e0q\u0002\u07f2\u00db\u0003\u0002\u0002",
    "\u0002\u07f3\u07f4\u0005\u00e0q\u0002\u07f4\u00dd\u0003\u0002\u0002",
    "\u0002\u07f5\u07f6\u0005\u00e0q\u0002\u07f6\u00df\u0003\u0002\u0002",
    "\u0002\u07f7\u07ff\u0007\u00ba\u0002\u0002\u07f8\u07ff\u0005\u00aeX",
    "\u0002\u07f9\u07ff\u0007\u00bd\u0002\u0002\u07fa\u07fb\u0007\u0005\u0002",
    "\u0002\u07fb\u07fc\u0005\u00e0q\u0002\u07fc\u07fd\u0007\u0006\u0002",
    "\u0002\u07fd\u07ff\u0003\u0002\u0002\u0002\u07fe\u07f7\u0003\u0002\u0002",
    "\u0002\u07fe\u07f8\u0003\u0002\u0002\u0002\u07fe\u07f9\u0003\u0002\u0002",
    "\u0002\u07fe\u07fa\u0003\u0002\u0002\u0002\u07ff\u00e1\u0003\u0002\u0002",
    "\u0002\u0123\u00e4\u00e6\u00f1\u00f8\u00fd\u0103\u0109\u010b\u0125\u012c",
    "\u0133\u0139\u013d\u0140\u0147\u014a\u014e\u0156\u015a\u015c\u0160\u0164",
    "\u0168\u016b\u0172\u0178\u017e\u0183\u018e\u0194\u0198\u019c\u019f\u01a3",
    "\u01a9\u01ae\u01b7\u01be\u01c4\u01c8\u01cc\u01d1\u01d7\u01e3\u01e7\u01ec",
    "\u01ef\u01f2\u01f7\u01fa\u0208\u020f\u0216\u0218\u021b\u0221\u0226\u022e",
    "\u0233\u0242\u0248\u0252\u0257\u0261\u0265\u0267\u026b\u0270\u0272\u027a",
    "\u0280\u0285\u028c\u0297\u029a\u029c\u02a3\u02a7\u02ae\u02b4\u02ba\u02c0",
    "\u02c5\u02ce\u02d3\u02de\u02e3\u02ee\u02f3\u02f7\u0307\u0311\u0316\u031e",
    "\u032a\u032f\u0337\u033e\u0341\u0348\u034b\u034e\u0352\u035a\u035f\u0369",
    "\u036e\u0377\u037e\u0382\u0386\u0389\u0391\u039e\u03a1\u03a9\u03b2\u03b6",
    "\u03bb\u03d9\u03e5\u03ea\u03f6\u03fc\u0403\u0407\u0411\u0414\u041a\u0420",
    "\u0429\u042c\u0430\u0432\u0434\u043d\u0444\u044b\u0451\u0456\u045e\u0463",
    "\u046c\u0477\u047e\u0482\u0485\u0489\u0493\u0499\u049b\u04a3\u04aa\u04b1",
    "\u04b6\u04b8\u04be\u04c7\u04cc\u04d3\u04d7\u04d9\u04dc\u04e4\u04e8\u04eb",
    "\u04f1\u04f5\u04fa\u0501\u050a\u050e\u0510\u0514\u051d\u0522\u0524\u0531",
    "\u0534\u053d\u0548\u054f\u0552\u0557\u055b\u055e\u0561\u0566\u056a\u056f",
    "\u0572\u0575\u057a\u057e\u0581\u0588\u058d\u0596\u059b\u059e\u05a6\u05aa",
    "\u05b2\u05b5\u05b7\u05c0\u05c3\u05c5\u05c9\u05cd\u05d1\u05d4\u05df\u05e4",
    "\u05e8\u05ec\u05ef\u05f4\u05fa\u0601\u0608\u060d\u0615\u061b\u0620\u0626",
    "\u062d\u0634\u0639\u063c\u063f\u0644\u0649\u0650\u0654\u0658\u0662\u066b",
    "\u066e\u0677\u067b\u0683\u068c\u068f\u0698\u069b\u069e\u06a1\u06ab\u06b4",
    "\u06bd\u06c1\u06c8\u06cf\u06d3\u06d7\u06e0\u06e4\u06e8\u06ed\u06f1\u06f8",
    "\u0702\u0709\u070e\u0711\u0715\u0723\u072f\u0738\u0741\u0745\u074f\u0752",
    "\u075b\u0764\u0767\u076d\u077b\u077f\u078a\u078f\u079c\u07a3\u07ab\u07b0",
    "\u07b4\u07c1\u07fe"].join("");


var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);

var decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });

var sharedContextCache = new antlr4.PredictionContextCache();

var literalNames = [ null, "';'", "'.'", "'('", "')'", "','", "'='", "'*'", 
                     "'+'", "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", 
                     "'>>'", "'&'", "'|'", "'<'", "'<='", "'>'", "'>='", 
                     "'=='", "'!='", "'<>'" ];

var symbolicNames = [ null, "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", 
                      "ASSIGN", "STAR", "PLUS", "MINUS", "TILDE", "PIPE2", 
                      "DIV", "MOD", "LT2", "GT2", "AMP", "PIPE", "LT", "LT_EQ", 
                      "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "ABORT", 
                      "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", 
                      "AND", "AS", "ASC", "ATTACH", "AUTOINCREMENT", "BEFORE", 
                      "BEGIN", "BETWEEN", "BY", "CASCADE", "CASE", "CAST", 
                      "CHECK", "COLLATE", "COLUMN", "COMMIT", "CONFLICT", 
                      "CONSTRAINT", "CREATE", "CROSS", "CURRENT_DATE", "CURRENT_TIME", 
                      "CURRENT_TIMESTAMP", "DATABASE", "DEFAULT", "DEFERRABLE", 
                      "DEFERRED", "DELETE", "DESC", "DETACH", "DISTINCT", 
                      "DROP", "EACH", "ELSE", "END", "ESCAPE", "EXCEPT", 
                      "EXCLUSIVE", "EXISTS", "EXPLAIN", "FAIL", "FOR", "FOREIGN", 
                      "FROM", "FULL", "GLOB", "GROUP", "HAVING", "IF", "IGNORE", 
                      "IMMEDIATE", "IN", "INDEX", "INDEXED", "INITIALLY", 
                      "INNER", "INSERT", "INSTEAD", "INTERSECT", "INTO", 
                      "IS", "ISNULL", "JOIN", "KEY", "LEFT", "LIKE", "LIMIT", 
                      "MATCH", "NATURAL", "NO", "NOT", "NOTNULL", "NULL", 
                      "OF", "OFFSET", "ON", "OR", "ORDER", "OUTER", "PLAN", 
                      "PRAGMA", "PRIMARY", "QUERY", "RAISE", "RECURSIVE", 
                      "REFERENCES", "REGEXP", "REINDEX", "RELEASE", "RENAME", 
                      "REPLACE", "RESTRICT", "RIGHT", "ROLLBACK", "ROW", 
                      "ROWS", "SAVEPOINT", "SELECT", "SET", "TABLE", "TEMP", 
                      "TEMPORARY", "THEN", "TO", "TRANSACTION", "TRIGGER", 
                      "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", 
                      "VIEW", "VIRTUAL", "WHEN", "WHERE", "WITH", "WITHOUT", 
                      "FIRST_VALUE", "OVER", "PARTITION", "RANGE", "PRECEDING", 
                      "UNBOUNDED", "CURRENT", "FOLLOWING", "CUME_DIST", 
                      "DENSE_RANK", "LAG", "LAST_VALUE", "LEAD", "NTH_VALUE", 
                      "NTILE", "PERCENT_RANK", "RANK", "ROW_NUMBER", "GENERATED", 
                      "ALWAYS", "STORED", "TRUE", "FALSE", "WINDOW", "NULLS", 
                      "FIRST", "LAST", "FILTER", "GROUPS", "EXCLUDE", "TIES", 
                      "OTHERS", "DO", "NOTHING", "IDENTIFIER", "NUMERIC_LITERAL", 
                      "BIND_PARAMETER", "STRING_LITERAL", "BLOB_LITERAL", 
                      "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", 
                      "UNEXPECTED_CHAR" ];

var ruleNames =  [ "parse", "error", "sql_stmt_list", "sql_stmt", "alter_table_stmt", 
                   "analyze_stmt", "attach_stmt", "begin_stmt", "commit_stmt", 
                   "rollback_stmt", "savepoint_stmt", "release_stmt", "create_index_stmt", 
                   "indexed_column", "create_table_stmt", "column_def", 
                   "type_name", "column_constraint", "signed_number", "table_constraint", 
                   "foreign_key_clause", "conflict_clause", "create_trigger_stmt", 
                   "create_view_stmt", "create_virtual_table_stmt", "with_clause", 
                   "cte_table_name", "recursive_cte", "common_table_expression", 
                   "delete_stmt", "delete_stmt_limited", "detach_stmt", 
                   "drop_stmt", "expr", "raise_function", "literal_value", 
                   "insert_stmt", "upsert_clause", "pragma_stmt", "pragma_value", 
                   "reindex_stmt", "select_stmt", "join_clause", "select_core", 
                   "factored_select_stmt", "simple_select_stmt", "compound_select_stmt", 
                   "table_or_subquery", "result_column", "join_operator", 
                   "join_constraint", "compound_operator", "update_stmt", 
                   "column_name_list", "update_stmt_limited", "qualified_table_name", 
                   "vacuum_stmt", "filter_clause", "window_defn", "over_clause", 
                   "frame_spec", "frame_clause", "simple_function_invocation", 
                   "aggregate_function_invocation", "window_function_invocation", 
                   "common_table_stmt", "order_by_stmt", "limit_stmt", "ordering_term", 
                   "asc_desc", "frame_left", "frame_right", "frame_single", 
                   "window_function", "offset", "default_value", "partition_by", 
                   "order_by_expr", "order_by_expr_asc_desc", "expr_asc_desc", 
                   "initial_select", "recursive_select", "unary_operator", 
                   "error_message", "module_argument", "column_alias", "keyword", 
                   "name", "function_name", "schema_name", "table_name", 
                   "table_or_index_name", "new_table_name", "column_name", 
                   "collation_name", "foreign_table", "index_name", "trigger_name", 
                   "view_name", "module_name", "pragma_name", "savepoint_name", 
                   "table_alias", "transaction_name", "window_name", "alias", 
                   "filename", "base_window_name", "simple_func", "aggregate_func", 
                   "table_function_name", "any_name" ];

function SQLiteParser (input) {
	antlr4.Parser.call(this, input);
    this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);
    this.ruleNames = ruleNames;
    this.literalNames = literalNames;
    this.symbolicNames = symbolicNames;
    return this;
}

SQLiteParser.prototype = Object.create(antlr4.Parser.prototype);
SQLiteParser.prototype.constructor = SQLiteParser;

Object.defineProperty(SQLiteParser.prototype, "atn", {
	get : function() {
		return atn;
	}
});

SQLiteParser.EOF = antlr4.Token.EOF;
SQLiteParser.SCOL = 1;
SQLiteParser.DOT = 2;
SQLiteParser.OPEN_PAR = 3;
SQLiteParser.CLOSE_PAR = 4;
SQLiteParser.COMMA = 5;
SQLiteParser.ASSIGN = 6;
SQLiteParser.STAR = 7;
SQLiteParser.PLUS = 8;
SQLiteParser.MINUS = 9;
SQLiteParser.TILDE = 10;
SQLiteParser.PIPE2 = 11;
SQLiteParser.DIV = 12;
SQLiteParser.MOD = 13;
SQLiteParser.LT2 = 14;
SQLiteParser.GT2 = 15;
SQLiteParser.AMP = 16;
SQLiteParser.PIPE = 17;
SQLiteParser.LT = 18;
SQLiteParser.LT_EQ = 19;
SQLiteParser.GT = 20;
SQLiteParser.GT_EQ = 21;
SQLiteParser.EQ = 22;
SQLiteParser.NOT_EQ1 = 23;
SQLiteParser.NOT_EQ2 = 24;
SQLiteParser.ABORT = 25;
SQLiteParser.ACTION = 26;
SQLiteParser.ADD = 27;
SQLiteParser.AFTER = 28;
SQLiteParser.ALL = 29;
SQLiteParser.ALTER = 30;
SQLiteParser.ANALYZE = 31;
SQLiteParser.AND = 32;
SQLiteParser.AS = 33;
SQLiteParser.ASC = 34;
SQLiteParser.ATTACH = 35;
SQLiteParser.AUTOINCREMENT = 36;
SQLiteParser.BEFORE = 37;
SQLiteParser.BEGIN = 38;
SQLiteParser.BETWEEN = 39;
SQLiteParser.BY = 40;
SQLiteParser.CASCADE = 41;
SQLiteParser.CASE = 42;
SQLiteParser.CAST = 43;
SQLiteParser.CHECK = 44;
SQLiteParser.COLLATE = 45;
SQLiteParser.COLUMN = 46;
SQLiteParser.COMMIT = 47;
SQLiteParser.CONFLICT = 48;
SQLiteParser.CONSTRAINT = 49;
SQLiteParser.CREATE = 50;
SQLiteParser.CROSS = 51;
SQLiteParser.CURRENT_DATE = 52;
SQLiteParser.CURRENT_TIME = 53;
SQLiteParser.CURRENT_TIMESTAMP = 54;
SQLiteParser.DATABASE = 55;
SQLiteParser.DEFAULT = 56;
SQLiteParser.DEFERRABLE = 57;
SQLiteParser.DEFERRED = 58;
SQLiteParser.DELETE = 59;
SQLiteParser.DESC = 60;
SQLiteParser.DETACH = 61;
SQLiteParser.DISTINCT = 62;
SQLiteParser.DROP = 63;
SQLiteParser.EACH = 64;
SQLiteParser.ELSE = 65;
SQLiteParser.END = 66;
SQLiteParser.ESCAPE = 67;
SQLiteParser.EXCEPT = 68;
SQLiteParser.EXCLUSIVE = 69;
SQLiteParser.EXISTS = 70;
SQLiteParser.EXPLAIN = 71;
SQLiteParser.FAIL = 72;
SQLiteParser.FOR = 73;
SQLiteParser.FOREIGN = 74;
SQLiteParser.FROM = 75;
SQLiteParser.FULL = 76;
SQLiteParser.GLOB = 77;
SQLiteParser.GROUP = 78;
SQLiteParser.HAVING = 79;
SQLiteParser.IF = 80;
SQLiteParser.IGNORE = 81;
SQLiteParser.IMMEDIATE = 82;
SQLiteParser.IN = 83;
SQLiteParser.INDEX = 84;
SQLiteParser.INDEXED = 85;
SQLiteParser.INITIALLY = 86;
SQLiteParser.INNER = 87;
SQLiteParser.INSERT = 88;
SQLiteParser.INSTEAD = 89;
SQLiteParser.INTERSECT = 90;
SQLiteParser.INTO = 91;
SQLiteParser.IS = 92;
SQLiteParser.ISNULL = 93;
SQLiteParser.JOIN = 94;
SQLiteParser.KEY = 95;
SQLiteParser.LEFT = 96;
SQLiteParser.LIKE = 97;
SQLiteParser.LIMIT = 98;
SQLiteParser.MATCH = 99;
SQLiteParser.NATURAL = 100;
SQLiteParser.NO = 101;
SQLiteParser.NOT = 102;
SQLiteParser.NOTNULL = 103;
SQLiteParser.NULL = 104;
SQLiteParser.OF = 105;
SQLiteParser.OFFSET = 106;
SQLiteParser.ON = 107;
SQLiteParser.OR = 108;
SQLiteParser.ORDER = 109;
SQLiteParser.OUTER = 110;
SQLiteParser.PLAN = 111;
SQLiteParser.PRAGMA = 112;
SQLiteParser.PRIMARY = 113;
SQLiteParser.QUERY = 114;
SQLiteParser.RAISE = 115;
SQLiteParser.RECURSIVE = 116;
SQLiteParser.REFERENCES = 117;
SQLiteParser.REGEXP = 118;
SQLiteParser.REINDEX = 119;
SQLiteParser.RELEASE = 120;
SQLiteParser.RENAME = 121;
SQLiteParser.REPLACE = 122;
SQLiteParser.RESTRICT = 123;
SQLiteParser.RIGHT = 124;
SQLiteParser.ROLLBACK = 125;
SQLiteParser.ROW = 126;
SQLiteParser.ROWS = 127;
SQLiteParser.SAVEPOINT = 128;
SQLiteParser.SELECT = 129;
SQLiteParser.SET = 130;
SQLiteParser.TABLE = 131;
SQLiteParser.TEMP = 132;
SQLiteParser.TEMPORARY = 133;
SQLiteParser.THEN = 134;
SQLiteParser.TO = 135;
SQLiteParser.TRANSACTION = 136;
SQLiteParser.TRIGGER = 137;
SQLiteParser.UNION = 138;
SQLiteParser.UNIQUE = 139;
SQLiteParser.UPDATE = 140;
SQLiteParser.USING = 141;
SQLiteParser.VACUUM = 142;
SQLiteParser.VALUES = 143;
SQLiteParser.VIEW = 144;
SQLiteParser.VIRTUAL = 145;
SQLiteParser.WHEN = 146;
SQLiteParser.WHERE = 147;
SQLiteParser.WITH = 148;
SQLiteParser.WITHOUT = 149;
SQLiteParser.FIRST_VALUE = 150;
SQLiteParser.OVER = 151;
SQLiteParser.PARTITION = 152;
SQLiteParser.RANGE = 153;
SQLiteParser.PRECEDING = 154;
SQLiteParser.UNBOUNDED = 155;
SQLiteParser.CURRENT = 156;
SQLiteParser.FOLLOWING = 157;
SQLiteParser.CUME_DIST = 158;
SQLiteParser.DENSE_RANK = 159;
SQLiteParser.LAG = 160;
SQLiteParser.LAST_VALUE = 161;
SQLiteParser.LEAD = 162;
SQLiteParser.NTH_VALUE = 163;
SQLiteParser.NTILE = 164;
SQLiteParser.PERCENT_RANK = 165;
SQLiteParser.RANK = 166;
SQLiteParser.ROW_NUMBER = 167;
SQLiteParser.GENERATED = 168;
SQLiteParser.ALWAYS = 169;
SQLiteParser.STORED = 170;
SQLiteParser.TRUE = 171;
SQLiteParser.FALSE = 172;
SQLiteParser.WINDOW = 173;
SQLiteParser.NULLS = 174;
SQLiteParser.FIRST = 175;
SQLiteParser.LAST = 176;
SQLiteParser.FILTER = 177;
SQLiteParser.GROUPS = 178;
SQLiteParser.EXCLUDE = 179;
SQLiteParser.TIES = 180;
SQLiteParser.OTHERS = 181;
SQLiteParser.DO = 182;
SQLiteParser.NOTHING = 183;
SQLiteParser.IDENTIFIER = 184;
SQLiteParser.NUMERIC_LITERAL = 185;
SQLiteParser.BIND_PARAMETER = 186;
SQLiteParser.STRING_LITERAL = 187;
SQLiteParser.BLOB_LITERAL = 188;
SQLiteParser.SINGLE_LINE_COMMENT = 189;
SQLiteParser.MULTILINE_COMMENT = 190;
SQLiteParser.SPACES = 191;
SQLiteParser.UNEXPECTED_CHAR = 192;

SQLiteParser.RULE_parse = 0;
SQLiteParser.RULE_error = 1;
SQLiteParser.RULE_sql_stmt_list = 2;
SQLiteParser.RULE_sql_stmt = 3;
SQLiteParser.RULE_alter_table_stmt = 4;
SQLiteParser.RULE_analyze_stmt = 5;
SQLiteParser.RULE_attach_stmt = 6;
SQLiteParser.RULE_begin_stmt = 7;
SQLiteParser.RULE_commit_stmt = 8;
SQLiteParser.RULE_rollback_stmt = 9;
SQLiteParser.RULE_savepoint_stmt = 10;
SQLiteParser.RULE_release_stmt = 11;
SQLiteParser.RULE_create_index_stmt = 12;
SQLiteParser.RULE_indexed_column = 13;
SQLiteParser.RULE_create_table_stmt = 14;
SQLiteParser.RULE_column_def = 15;
SQLiteParser.RULE_type_name = 16;
SQLiteParser.RULE_column_constraint = 17;
SQLiteParser.RULE_signed_number = 18;
SQLiteParser.RULE_table_constraint = 19;
SQLiteParser.RULE_foreign_key_clause = 20;
SQLiteParser.RULE_conflict_clause = 21;
SQLiteParser.RULE_create_trigger_stmt = 22;
SQLiteParser.RULE_create_view_stmt = 23;
SQLiteParser.RULE_create_virtual_table_stmt = 24;
SQLiteParser.RULE_with_clause = 25;
SQLiteParser.RULE_cte_table_name = 26;
SQLiteParser.RULE_recursive_cte = 27;
SQLiteParser.RULE_common_table_expression = 28;
SQLiteParser.RULE_delete_stmt = 29;
SQLiteParser.RULE_delete_stmt_limited = 30;
SQLiteParser.RULE_detach_stmt = 31;
SQLiteParser.RULE_drop_stmt = 32;
SQLiteParser.RULE_expr = 33;
SQLiteParser.RULE_raise_function = 34;
SQLiteParser.RULE_literal_value = 35;
SQLiteParser.RULE_insert_stmt = 36;
SQLiteParser.RULE_upsert_clause = 37;
SQLiteParser.RULE_pragma_stmt = 38;
SQLiteParser.RULE_pragma_value = 39;
SQLiteParser.RULE_reindex_stmt = 40;
SQLiteParser.RULE_select_stmt = 41;
SQLiteParser.RULE_join_clause = 42;
SQLiteParser.RULE_select_core = 43;
SQLiteParser.RULE_factored_select_stmt = 44;
SQLiteParser.RULE_simple_select_stmt = 45;
SQLiteParser.RULE_compound_select_stmt = 46;
SQLiteParser.RULE_table_or_subquery = 47;
SQLiteParser.RULE_result_column = 48;
SQLiteParser.RULE_join_operator = 49;
SQLiteParser.RULE_join_constraint = 50;
SQLiteParser.RULE_compound_operator = 51;
SQLiteParser.RULE_update_stmt = 52;
SQLiteParser.RULE_column_name_list = 53;
SQLiteParser.RULE_update_stmt_limited = 54;
SQLiteParser.RULE_qualified_table_name = 55;
SQLiteParser.RULE_vacuum_stmt = 56;
SQLiteParser.RULE_filter_clause = 57;
SQLiteParser.RULE_window_defn = 58;
SQLiteParser.RULE_over_clause = 59;
SQLiteParser.RULE_frame_spec = 60;
SQLiteParser.RULE_frame_clause = 61;
SQLiteParser.RULE_simple_function_invocation = 62;
SQLiteParser.RULE_aggregate_function_invocation = 63;
SQLiteParser.RULE_window_function_invocation = 64;
SQLiteParser.RULE_common_table_stmt = 65;
SQLiteParser.RULE_order_by_stmt = 66;
SQLiteParser.RULE_limit_stmt = 67;
SQLiteParser.RULE_ordering_term = 68;
SQLiteParser.RULE_asc_desc = 69;
SQLiteParser.RULE_frame_left = 70;
SQLiteParser.RULE_frame_right = 71;
SQLiteParser.RULE_frame_single = 72;
SQLiteParser.RULE_window_function = 73;
SQLiteParser.RULE_offset = 74;
SQLiteParser.RULE_default_value = 75;
SQLiteParser.RULE_partition_by = 76;
SQLiteParser.RULE_order_by_expr = 77;
SQLiteParser.RULE_order_by_expr_asc_desc = 78;
SQLiteParser.RULE_expr_asc_desc = 79;
SQLiteParser.RULE_initial_select = 80;
SQLiteParser.RULE_recursive_select = 81;
SQLiteParser.RULE_unary_operator = 82;
SQLiteParser.RULE_error_message = 83;
SQLiteParser.RULE_module_argument = 84;
SQLiteParser.RULE_column_alias = 85;
SQLiteParser.RULE_keyword = 86;
SQLiteParser.RULE_name = 87;
SQLiteParser.RULE_function_name = 88;
SQLiteParser.RULE_schema_name = 89;
SQLiteParser.RULE_table_name = 90;
SQLiteParser.RULE_table_or_index_name = 91;
SQLiteParser.RULE_new_table_name = 92;
SQLiteParser.RULE_column_name = 93;
SQLiteParser.RULE_collation_name = 94;
SQLiteParser.RULE_foreign_table = 95;
SQLiteParser.RULE_index_name = 96;
SQLiteParser.RULE_trigger_name = 97;
SQLiteParser.RULE_view_name = 98;
SQLiteParser.RULE_module_name = 99;
SQLiteParser.RULE_pragma_name = 100;
SQLiteParser.RULE_savepoint_name = 101;
SQLiteParser.RULE_table_alias = 102;
SQLiteParser.RULE_transaction_name = 103;
SQLiteParser.RULE_window_name = 104;
SQLiteParser.RULE_alias = 105;
SQLiteParser.RULE_filename = 106;
SQLiteParser.RULE_base_window_name = 107;
SQLiteParser.RULE_simple_func = 108;
SQLiteParser.RULE_aggregate_func = 109;
SQLiteParser.RULE_table_function_name = 110;
SQLiteParser.RULE_any_name = 111;


function ParseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_parse;
    return this;
}

ParseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ParseContext.prototype.constructor = ParseContext;

ParseContext.prototype.EOF = function() {
    return this.getToken(SQLiteParser.EOF, 0);
};

ParseContext.prototype.sql_stmt_list = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Sql_stmt_listContext);
    } else {
        return this.getTypedRuleContext(Sql_stmt_listContext,i);
    }
};

ParseContext.prototype.error = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ErrorContext);
    } else {
        return this.getTypedRuleContext(ErrorContext,i);
    }
};




SQLiteParser.ParseContext = ParseContext;

SQLiteParser.prototype.parse = function() {

    var localctx = new ParseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 0, SQLiteParser.RULE_parse);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 228;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.SCOL) | (1 << SQLiteParser.ALTER) | (1 << SQLiteParser.ANALYZE))) !== 0) || ((((_la - 35)) & ~0x1f) == 0 && ((1 << (_la - 35)) & ((1 << (SQLiteParser.ATTACH - 35)) | (1 << (SQLiteParser.BEGIN - 35)) | (1 << (SQLiteParser.COMMIT - 35)) | (1 << (SQLiteParser.CREATE - 35)) | (1 << (SQLiteParser.DEFAULT - 35)) | (1 << (SQLiteParser.DELETE - 35)) | (1 << (SQLiteParser.DETACH - 35)) | (1 << (SQLiteParser.DROP - 35)) | (1 << (SQLiteParser.END - 35)))) !== 0) || _la===SQLiteParser.EXPLAIN || _la===SQLiteParser.INSERT || ((((_la - 112)) & ~0x1f) == 0 && ((1 << (_la - 112)) & ((1 << (SQLiteParser.PRAGMA - 112)) | (1 << (SQLiteParser.REINDEX - 112)) | (1 << (SQLiteParser.RELEASE - 112)) | (1 << (SQLiteParser.REPLACE - 112)) | (1 << (SQLiteParser.ROLLBACK - 112)) | (1 << (SQLiteParser.SAVEPOINT - 112)) | (1 << (SQLiteParser.SELECT - 112)) | (1 << (SQLiteParser.UPDATE - 112)) | (1 << (SQLiteParser.VACUUM - 112)) | (1 << (SQLiteParser.VALUES - 112)))) !== 0) || _la===SQLiteParser.WITH || _la===SQLiteParser.UNEXPECTED_CHAR) {
            this.state = 226;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SQLiteParser.SCOL:
            case SQLiteParser.ALTER:
            case SQLiteParser.ANALYZE:
            case SQLiteParser.ATTACH:
            case SQLiteParser.BEGIN:
            case SQLiteParser.COMMIT:
            case SQLiteParser.CREATE:
            case SQLiteParser.DEFAULT:
            case SQLiteParser.DELETE:
            case SQLiteParser.DETACH:
            case SQLiteParser.DROP:
            case SQLiteParser.END:
            case SQLiteParser.EXPLAIN:
            case SQLiteParser.INSERT:
            case SQLiteParser.PRAGMA:
            case SQLiteParser.REINDEX:
            case SQLiteParser.RELEASE:
            case SQLiteParser.REPLACE:
            case SQLiteParser.ROLLBACK:
            case SQLiteParser.SAVEPOINT:
            case SQLiteParser.SELECT:
            case SQLiteParser.UPDATE:
            case SQLiteParser.VACUUM:
            case SQLiteParser.VALUES:
            case SQLiteParser.WITH:
                this.state = 224;
                this.sql_stmt_list();
                break;
            case SQLiteParser.UNEXPECTED_CHAR:
                this.state = 225;
                this.error();
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 230;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 231;
        this.match(SQLiteParser.EOF);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function ErrorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_error;
    this._UNEXPECTED_CHAR = null; // Token
    return this;
}

ErrorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ErrorContext.prototype.constructor = ErrorContext;

ErrorContext.prototype.UNEXPECTED_CHAR = function() {
    return this.getToken(SQLiteParser.UNEXPECTED_CHAR, 0);
};




SQLiteParser.ErrorContext = ErrorContext;

SQLiteParser.prototype.error = function() {

    var localctx = new ErrorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 2, SQLiteParser.RULE_error);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 233;
        localctx._UNEXPECTED_CHAR = this.match(SQLiteParser.UNEXPECTED_CHAR);
         
             throw new RuntimeException("UNEXPECTED_CHAR=" + (localctx._UNEXPECTED_CHAR===null ? null : localctx._UNEXPECTED_CHAR.text)); 
           
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Sql_stmt_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_sql_stmt_list;
    return this;
}

Sql_stmt_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sql_stmt_listContext.prototype.constructor = Sql_stmt_listContext;

Sql_stmt_listContext.prototype.sql_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Sql_stmtContext);
    } else {
        return this.getTypedRuleContext(Sql_stmtContext,i);
    }
};

Sql_stmt_listContext.prototype.SCOL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.SCOL);
    } else {
        return this.getToken(SQLiteParser.SCOL, i);
    }
};





SQLiteParser.Sql_stmt_listContext = Sql_stmt_listContext;

SQLiteParser.prototype.sql_stmt_list = function() {

    var localctx = new Sql_stmt_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 4, SQLiteParser.RULE_sql_stmt_list);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 239;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.SCOL) {
            this.state = 236;
            this.match(SQLiteParser.SCOL);
            this.state = 241;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 242;
        this.sql_stmt();
        this.state = 251;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,4,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 244; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                do {
                    this.state = 243;
                    this.match(SQLiteParser.SCOL);
                    this.state = 246; 
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                } while(_la===SQLiteParser.SCOL);
                this.state = 248;
                this.sql_stmt(); 
            }
            this.state = 253;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,4,this._ctx);
        }

        this.state = 257;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,5,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 254;
                this.match(SQLiteParser.SCOL); 
            }
            this.state = 259;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,5,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Sql_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_sql_stmt;
    return this;
}

Sql_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Sql_stmtContext.prototype.constructor = Sql_stmtContext;

Sql_stmtContext.prototype.alter_table_stmt = function() {
    return this.getTypedRuleContext(Alter_table_stmtContext,0);
};

Sql_stmtContext.prototype.analyze_stmt = function() {
    return this.getTypedRuleContext(Analyze_stmtContext,0);
};

Sql_stmtContext.prototype.attach_stmt = function() {
    return this.getTypedRuleContext(Attach_stmtContext,0);
};

Sql_stmtContext.prototype.begin_stmt = function() {
    return this.getTypedRuleContext(Begin_stmtContext,0);
};

Sql_stmtContext.prototype.commit_stmt = function() {
    return this.getTypedRuleContext(Commit_stmtContext,0);
};

Sql_stmtContext.prototype.create_index_stmt = function() {
    return this.getTypedRuleContext(Create_index_stmtContext,0);
};

Sql_stmtContext.prototype.create_table_stmt = function() {
    return this.getTypedRuleContext(Create_table_stmtContext,0);
};

Sql_stmtContext.prototype.create_trigger_stmt = function() {
    return this.getTypedRuleContext(Create_trigger_stmtContext,0);
};

Sql_stmtContext.prototype.create_view_stmt = function() {
    return this.getTypedRuleContext(Create_view_stmtContext,0);
};

Sql_stmtContext.prototype.create_virtual_table_stmt = function() {
    return this.getTypedRuleContext(Create_virtual_table_stmtContext,0);
};

Sql_stmtContext.prototype.delete_stmt = function() {
    return this.getTypedRuleContext(Delete_stmtContext,0);
};

Sql_stmtContext.prototype.delete_stmt_limited = function() {
    return this.getTypedRuleContext(Delete_stmt_limitedContext,0);
};

Sql_stmtContext.prototype.detach_stmt = function() {
    return this.getTypedRuleContext(Detach_stmtContext,0);
};

Sql_stmtContext.prototype.drop_stmt = function() {
    return this.getTypedRuleContext(Drop_stmtContext,0);
};

Sql_stmtContext.prototype.insert_stmt = function() {
    return this.getTypedRuleContext(Insert_stmtContext,0);
};

Sql_stmtContext.prototype.pragma_stmt = function() {
    return this.getTypedRuleContext(Pragma_stmtContext,0);
};

Sql_stmtContext.prototype.reindex_stmt = function() {
    return this.getTypedRuleContext(Reindex_stmtContext,0);
};

Sql_stmtContext.prototype.release_stmt = function() {
    return this.getTypedRuleContext(Release_stmtContext,0);
};

Sql_stmtContext.prototype.rollback_stmt = function() {
    return this.getTypedRuleContext(Rollback_stmtContext,0);
};

Sql_stmtContext.prototype.savepoint_stmt = function() {
    return this.getTypedRuleContext(Savepoint_stmtContext,0);
};

Sql_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Sql_stmtContext.prototype.update_stmt = function() {
    return this.getTypedRuleContext(Update_stmtContext,0);
};

Sql_stmtContext.prototype.update_stmt_limited = function() {
    return this.getTypedRuleContext(Update_stmt_limitedContext,0);
};

Sql_stmtContext.prototype.vacuum_stmt = function() {
    return this.getTypedRuleContext(Vacuum_stmtContext,0);
};

Sql_stmtContext.prototype.EXPLAIN = function() {
    return this.getToken(SQLiteParser.EXPLAIN, 0);
};

Sql_stmtContext.prototype.QUERY = function() {
    return this.getToken(SQLiteParser.QUERY, 0);
};

Sql_stmtContext.prototype.PLAN = function() {
    return this.getToken(SQLiteParser.PLAN, 0);
};




SQLiteParser.Sql_stmtContext = Sql_stmtContext;

SQLiteParser.prototype.sql_stmt = function() {

    var localctx = new Sql_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 6, SQLiteParser.RULE_sql_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 265;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.EXPLAIN) {
            this.state = 260;
            this.match(SQLiteParser.EXPLAIN);
            this.state = 263;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.QUERY) {
                this.state = 261;
                this.match(SQLiteParser.QUERY);
                this.state = 262;
                this.match(SQLiteParser.PLAN);
            }

        }

        this.state = 291;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,8,this._ctx);
        switch(la_) {
        case 1:
            this.state = 267;
            this.alter_table_stmt();
            break;

        case 2:
            this.state = 268;
            this.analyze_stmt();
            break;

        case 3:
            this.state = 269;
            this.attach_stmt();
            break;

        case 4:
            this.state = 270;
            this.begin_stmt();
            break;

        case 5:
            this.state = 271;
            this.commit_stmt();
            break;

        case 6:
            this.state = 272;
            this.create_index_stmt();
            break;

        case 7:
            this.state = 273;
            this.create_table_stmt();
            break;

        case 8:
            this.state = 274;
            this.create_trigger_stmt();
            break;

        case 9:
            this.state = 275;
            this.create_view_stmt();
            break;

        case 10:
            this.state = 276;
            this.create_virtual_table_stmt();
            break;

        case 11:
            this.state = 277;
            this.delete_stmt();
            break;

        case 12:
            this.state = 278;
            this.delete_stmt_limited();
            break;

        case 13:
            this.state = 279;
            this.detach_stmt();
            break;

        case 14:
            this.state = 280;
            this.drop_stmt();
            break;

        case 15:
            this.state = 281;
            this.insert_stmt();
            break;

        case 16:
            this.state = 282;
            this.pragma_stmt();
            break;

        case 17:
            this.state = 283;
            this.reindex_stmt();
            break;

        case 18:
            this.state = 284;
            this.release_stmt();
            break;

        case 19:
            this.state = 285;
            this.rollback_stmt();
            break;

        case 20:
            this.state = 286;
            this.savepoint_stmt();
            break;

        case 21:
            this.state = 287;
            this.select_stmt();
            break;

        case 22:
            this.state = 288;
            this.update_stmt();
            break;

        case 23:
            this.state = 289;
            this.update_stmt_limited();
            break;

        case 24:
            this.state = 290;
            this.vacuum_stmt();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Alter_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_alter_table_stmt;
    this.old_column_name = null; // Column_nameContext
    this.new_column_name = null; // Column_nameContext
    return this;
}

Alter_table_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Alter_table_stmtContext.prototype.constructor = Alter_table_stmtContext;

Alter_table_stmtContext.prototype.ALTER = function() {
    return this.getToken(SQLiteParser.ALTER, 0);
};

Alter_table_stmtContext.prototype.TABLE = function() {
    return this.getToken(SQLiteParser.TABLE, 0);
};

Alter_table_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Alter_table_stmtContext.prototype.RENAME = function() {
    return this.getToken(SQLiteParser.RENAME, 0);
};

Alter_table_stmtContext.prototype.ADD = function() {
    return this.getToken(SQLiteParser.ADD, 0);
};

Alter_table_stmtContext.prototype.column_def = function() {
    return this.getTypedRuleContext(Column_defContext,0);
};

Alter_table_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Alter_table_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Alter_table_stmtContext.prototype.COLUMN = function() {
    return this.getToken(SQLiteParser.COLUMN, 0);
};

Alter_table_stmtContext.prototype.TO = function() {
    return this.getToken(SQLiteParser.TO, 0);
};

Alter_table_stmtContext.prototype.new_table_name = function() {
    return this.getTypedRuleContext(New_table_nameContext,0);
};

Alter_table_stmtContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};




SQLiteParser.Alter_table_stmtContext = Alter_table_stmtContext;

SQLiteParser.prototype.alter_table_stmt = function() {

    var localctx = new Alter_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 8, SQLiteParser.RULE_alter_table_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 293;
        this.match(SQLiteParser.ALTER);
        this.state = 294;
        this.match(SQLiteParser.TABLE);
        this.state = 298;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,9,this._ctx);
        if(la_===1) {
            this.state = 295;
            this.schema_name();
            this.state = 296;
            this.match(SQLiteParser.DOT);

        }
        this.state = 300;
        this.table_name();
        this.state = 318;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.RENAME:
            this.state = 301;
            this.match(SQLiteParser.RENAME);
            this.state = 311;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,11,this._ctx);
            switch(la_) {
            case 1:
                this.state = 302;
                this.match(SQLiteParser.TO);
                this.state = 303;
                this.new_table_name();
                break;

            case 2:
                this.state = 305;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,10,this._ctx);
                if(la_===1) {
                    this.state = 304;
                    this.match(SQLiteParser.COLUMN);

                }
                this.state = 307;
                localctx.old_column_name = this.column_name();
                this.state = 308;
                this.match(SQLiteParser.TO);
                this.state = 309;
                localctx.new_column_name = this.column_name();
                break;

            }
            break;
        case SQLiteParser.ADD:
            this.state = 313;
            this.match(SQLiteParser.ADD);
            this.state = 315;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,12,this._ctx);
            if(la_===1) {
                this.state = 314;
                this.match(SQLiteParser.COLUMN);

            }
            this.state = 317;
            this.column_def();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Analyze_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_analyze_stmt;
    return this;
}

Analyze_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Analyze_stmtContext.prototype.constructor = Analyze_stmtContext;

Analyze_stmtContext.prototype.ANALYZE = function() {
    return this.getToken(SQLiteParser.ANALYZE, 0);
};

Analyze_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Analyze_stmtContext.prototype.table_or_index_name = function() {
    return this.getTypedRuleContext(Table_or_index_nameContext,0);
};

Analyze_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};




SQLiteParser.Analyze_stmtContext = Analyze_stmtContext;

SQLiteParser.prototype.analyze_stmt = function() {

    var localctx = new Analyze_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 10, SQLiteParser.RULE_analyze_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 320;
        this.match(SQLiteParser.ANALYZE);
        this.state = 328;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);
        if(la_===1) {
            this.state = 321;
            this.schema_name();

        } else if(la_===2) {
            this.state = 325;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,14,this._ctx);
            if(la_===1) {
                this.state = 322;
                this.schema_name();
                this.state = 323;
                this.match(SQLiteParser.DOT);

            }
            this.state = 327;
            this.table_or_index_name();

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Attach_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_attach_stmt;
    return this;
}

Attach_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Attach_stmtContext.prototype.constructor = Attach_stmtContext;

Attach_stmtContext.prototype.ATTACH = function() {
    return this.getToken(SQLiteParser.ATTACH, 0);
};

Attach_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Attach_stmtContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Attach_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Attach_stmtContext.prototype.DATABASE = function() {
    return this.getToken(SQLiteParser.DATABASE, 0);
};




SQLiteParser.Attach_stmtContext = Attach_stmtContext;

SQLiteParser.prototype.attach_stmt = function() {

    var localctx = new Attach_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 12, SQLiteParser.RULE_attach_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 330;
        this.match(SQLiteParser.ATTACH);
        this.state = 332;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,16,this._ctx);
        if(la_===1) {
            this.state = 331;
            this.match(SQLiteParser.DATABASE);

        }
        this.state = 334;
        this.expr(0);
        this.state = 335;
        this.match(SQLiteParser.AS);
        this.state = 336;
        this.schema_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Begin_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_begin_stmt;
    return this;
}

Begin_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Begin_stmtContext.prototype.constructor = Begin_stmtContext;

Begin_stmtContext.prototype.BEGIN = function() {
    return this.getToken(SQLiteParser.BEGIN, 0);
};

Begin_stmtContext.prototype.TRANSACTION = function() {
    return this.getToken(SQLiteParser.TRANSACTION, 0);
};

Begin_stmtContext.prototype.DEFERRED = function() {
    return this.getToken(SQLiteParser.DEFERRED, 0);
};

Begin_stmtContext.prototype.IMMEDIATE = function() {
    return this.getToken(SQLiteParser.IMMEDIATE, 0);
};

Begin_stmtContext.prototype.EXCLUSIVE = function() {
    return this.getToken(SQLiteParser.EXCLUSIVE, 0);
};

Begin_stmtContext.prototype.transaction_name = function() {
    return this.getTypedRuleContext(Transaction_nameContext,0);
};




SQLiteParser.Begin_stmtContext = Begin_stmtContext;

SQLiteParser.prototype.begin_stmt = function() {

    var localctx = new Begin_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 14, SQLiteParser.RULE_begin_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 338;
        this.match(SQLiteParser.BEGIN);
        this.state = 340;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(((((_la - 58)) & ~0x1f) == 0 && ((1 << (_la - 58)) & ((1 << (SQLiteParser.DEFERRED - 58)) | (1 << (SQLiteParser.EXCLUSIVE - 58)) | (1 << (SQLiteParser.IMMEDIATE - 58)))) !== 0)) {
            this.state = 339;
            _la = this._input.LA(1);
            if(!(((((_la - 58)) & ~0x1f) == 0 && ((1 << (_la - 58)) & ((1 << (SQLiteParser.DEFERRED - 58)) | (1 << (SQLiteParser.EXCLUSIVE - 58)) | (1 << (SQLiteParser.IMMEDIATE - 58)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 346;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TRANSACTION) {
            this.state = 342;
            this.match(SQLiteParser.TRANSACTION);
            this.state = 344;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,18,this._ctx);
            if(la_===1) {
                this.state = 343;
                this.transaction_name();

            }
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Commit_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_commit_stmt;
    return this;
}

Commit_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Commit_stmtContext.prototype.constructor = Commit_stmtContext;

Commit_stmtContext.prototype.COMMIT = function() {
    return this.getToken(SQLiteParser.COMMIT, 0);
};

Commit_stmtContext.prototype.END = function() {
    return this.getToken(SQLiteParser.END, 0);
};

Commit_stmtContext.prototype.TRANSACTION = function() {
    return this.getToken(SQLiteParser.TRANSACTION, 0);
};




SQLiteParser.Commit_stmtContext = Commit_stmtContext;

SQLiteParser.prototype.commit_stmt = function() {

    var localctx = new Commit_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 16, SQLiteParser.RULE_commit_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 348;
        _la = this._input.LA(1);
        if(!(_la===SQLiteParser.COMMIT || _la===SQLiteParser.END)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 350;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TRANSACTION) {
            this.state = 349;
            this.match(SQLiteParser.TRANSACTION);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Rollback_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_rollback_stmt;
    return this;
}

Rollback_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Rollback_stmtContext.prototype.constructor = Rollback_stmtContext;

Rollback_stmtContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

Rollback_stmtContext.prototype.TRANSACTION = function() {
    return this.getToken(SQLiteParser.TRANSACTION, 0);
};

Rollback_stmtContext.prototype.TO = function() {
    return this.getToken(SQLiteParser.TO, 0);
};

Rollback_stmtContext.prototype.savepoint_name = function() {
    return this.getTypedRuleContext(Savepoint_nameContext,0);
};

Rollback_stmtContext.prototype.SAVEPOINT = function() {
    return this.getToken(SQLiteParser.SAVEPOINT, 0);
};




SQLiteParser.Rollback_stmtContext = Rollback_stmtContext;

SQLiteParser.prototype.rollback_stmt = function() {

    var localctx = new Rollback_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 18, SQLiteParser.RULE_rollback_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 352;
        this.match(SQLiteParser.ROLLBACK);
        this.state = 354;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TRANSACTION) {
            this.state = 353;
            this.match(SQLiteParser.TRANSACTION);
        }

        this.state = 361;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TO) {
            this.state = 356;
            this.match(SQLiteParser.TO);
            this.state = 358;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,22,this._ctx);
            if(la_===1) {
                this.state = 357;
                this.match(SQLiteParser.SAVEPOINT);

            }
            this.state = 360;
            this.savepoint_name();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Savepoint_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_savepoint_stmt;
    return this;
}

Savepoint_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Savepoint_stmtContext.prototype.constructor = Savepoint_stmtContext;

Savepoint_stmtContext.prototype.SAVEPOINT = function() {
    return this.getToken(SQLiteParser.SAVEPOINT, 0);
};

Savepoint_stmtContext.prototype.savepoint_name = function() {
    return this.getTypedRuleContext(Savepoint_nameContext,0);
};




SQLiteParser.Savepoint_stmtContext = Savepoint_stmtContext;

SQLiteParser.prototype.savepoint_stmt = function() {

    var localctx = new Savepoint_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 20, SQLiteParser.RULE_savepoint_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 363;
        this.match(SQLiteParser.SAVEPOINT);
        this.state = 364;
        this.savepoint_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Release_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_release_stmt;
    return this;
}

Release_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Release_stmtContext.prototype.constructor = Release_stmtContext;

Release_stmtContext.prototype.RELEASE = function() {
    return this.getToken(SQLiteParser.RELEASE, 0);
};

Release_stmtContext.prototype.savepoint_name = function() {
    return this.getTypedRuleContext(Savepoint_nameContext,0);
};

Release_stmtContext.prototype.SAVEPOINT = function() {
    return this.getToken(SQLiteParser.SAVEPOINT, 0);
};




SQLiteParser.Release_stmtContext = Release_stmtContext;

SQLiteParser.prototype.release_stmt = function() {

    var localctx = new Release_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 22, SQLiteParser.RULE_release_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 366;
        this.match(SQLiteParser.RELEASE);
        this.state = 368;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,24,this._ctx);
        if(la_===1) {
            this.state = 367;
            this.match(SQLiteParser.SAVEPOINT);

        }
        this.state = 370;
        this.savepoint_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Create_index_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_create_index_stmt;
    return this;
}

Create_index_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Create_index_stmtContext.prototype.constructor = Create_index_stmtContext;

Create_index_stmtContext.prototype.CREATE = function() {
    return this.getToken(SQLiteParser.CREATE, 0);
};

Create_index_stmtContext.prototype.INDEX = function() {
    return this.getToken(SQLiteParser.INDEX, 0);
};

Create_index_stmtContext.prototype.index_name = function() {
    return this.getTypedRuleContext(Index_nameContext,0);
};

Create_index_stmtContext.prototype.ON = function() {
    return this.getToken(SQLiteParser.ON, 0);
};

Create_index_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_index_stmtContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Create_index_stmtContext.prototype.indexed_column = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Indexed_columnContext);
    } else {
        return this.getTypedRuleContext(Indexed_columnContext,i);
    }
};

Create_index_stmtContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Create_index_stmtContext.prototype.UNIQUE = function() {
    return this.getToken(SQLiteParser.UNIQUE, 0);
};

Create_index_stmtContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

Create_index_stmtContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Create_index_stmtContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

Create_index_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Create_index_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Create_index_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Create_index_stmtContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Create_index_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};




SQLiteParser.Create_index_stmtContext = Create_index_stmtContext;

SQLiteParser.prototype.create_index_stmt = function() {

    var localctx = new Create_index_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 24, SQLiteParser.RULE_create_index_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 372;
        this.match(SQLiteParser.CREATE);
        this.state = 374;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.UNIQUE) {
            this.state = 373;
            this.match(SQLiteParser.UNIQUE);
        }

        this.state = 376;
        this.match(SQLiteParser.INDEX);
        this.state = 380;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,26,this._ctx);
        if(la_===1) {
            this.state = 377;
            this.match(SQLiteParser.IF);
            this.state = 378;
            this.match(SQLiteParser.NOT);
            this.state = 379;
            this.match(SQLiteParser.EXISTS);

        }
        this.state = 385;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,27,this._ctx);
        if(la_===1) {
            this.state = 382;
            this.schema_name();
            this.state = 383;
            this.match(SQLiteParser.DOT);

        }
        this.state = 387;
        this.index_name();
        this.state = 388;
        this.match(SQLiteParser.ON);
        this.state = 389;
        this.table_name();
        this.state = 390;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 391;
        this.indexed_column();
        this.state = 396;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 392;
            this.match(SQLiteParser.COMMA);
            this.state = 393;
            this.indexed_column();
            this.state = 398;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 399;
        this.match(SQLiteParser.CLOSE_PAR);
        this.state = 402;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WHERE) {
            this.state = 400;
            this.match(SQLiteParser.WHERE);
            this.state = 401;
            this.expr(0);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Indexed_columnContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_indexed_column;
    return this;
}

Indexed_columnContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Indexed_columnContext.prototype.constructor = Indexed_columnContext;

Indexed_columnContext.prototype.column_name = function() {
    return this.getTypedRuleContext(Column_nameContext,0);
};

Indexed_columnContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Indexed_columnContext.prototype.COLLATE = function() {
    return this.getToken(SQLiteParser.COLLATE, 0);
};

Indexed_columnContext.prototype.collation_name = function() {
    return this.getTypedRuleContext(Collation_nameContext,0);
};

Indexed_columnContext.prototype.asc_desc = function() {
    return this.getTypedRuleContext(Asc_descContext,0);
};




SQLiteParser.Indexed_columnContext = Indexed_columnContext;

SQLiteParser.prototype.indexed_column = function() {

    var localctx = new Indexed_columnContext(this, this._ctx, this.state);
    this.enterRule(localctx, 26, SQLiteParser.RULE_indexed_column);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 406;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,30,this._ctx);
        switch(la_) {
        case 1:
            this.state = 404;
            this.column_name();
            break;

        case 2:
            this.state = 405;
            this.expr(0);
            break;

        }
        this.state = 410;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.COLLATE) {
            this.state = 408;
            this.match(SQLiteParser.COLLATE);
            this.state = 409;
            this.collation_name();
        }

        this.state = 413;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ASC || _la===SQLiteParser.DESC) {
            this.state = 412;
            this.asc_desc();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Create_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_create_table_stmt;
    this.rowID = null; // Token
    return this;
}

Create_table_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Create_table_stmtContext.prototype.constructor = Create_table_stmtContext;

Create_table_stmtContext.prototype.CREATE = function() {
    return this.getToken(SQLiteParser.CREATE, 0);
};

Create_table_stmtContext.prototype.TABLE = function() {
    return this.getToken(SQLiteParser.TABLE, 0);
};

Create_table_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_table_stmtContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

Create_table_stmtContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Create_table_stmtContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

Create_table_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Create_table_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Create_table_stmtContext.prototype.TEMP = function() {
    return this.getToken(SQLiteParser.TEMP, 0);
};

Create_table_stmtContext.prototype.TEMPORARY = function() {
    return this.getToken(SQLiteParser.TEMPORARY, 0);
};

Create_table_stmtContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Create_table_stmtContext.prototype.column_def = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_defContext);
    } else {
        return this.getTypedRuleContext(Column_defContext,i);
    }
};

Create_table_stmtContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Create_table_stmtContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Create_table_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Create_table_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Create_table_stmtContext.prototype.table_constraint = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Table_constraintContext);
    } else {
        return this.getTypedRuleContext(Table_constraintContext,i);
    }
};

Create_table_stmtContext.prototype.WITHOUT = function() {
    return this.getToken(SQLiteParser.WITHOUT, 0);
};

Create_table_stmtContext.prototype.IDENTIFIER = function() {
    return this.getToken(SQLiteParser.IDENTIFIER, 0);
};




SQLiteParser.Create_table_stmtContext = Create_table_stmtContext;

SQLiteParser.prototype.create_table_stmt = function() {

    var localctx = new Create_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 28, SQLiteParser.RULE_create_table_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 415;
        this.match(SQLiteParser.CREATE);
        this.state = 417;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TEMP || _la===SQLiteParser.TEMPORARY) {
            this.state = 416;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.TEMP || _la===SQLiteParser.TEMPORARY)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 419;
        this.match(SQLiteParser.TABLE);
        this.state = 423;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,34,this._ctx);
        if(la_===1) {
            this.state = 420;
            this.match(SQLiteParser.IF);
            this.state = 421;
            this.match(SQLiteParser.NOT);
            this.state = 422;
            this.match(SQLiteParser.EXISTS);

        }
        this.state = 428;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,35,this._ctx);
        if(la_===1) {
            this.state = 425;
            this.schema_name();
            this.state = 426;
            this.match(SQLiteParser.DOT);

        }
        this.state = 430;
        this.table_name();
        this.state = 454;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.OPEN_PAR:
            this.state = 431;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 432;
            this.column_def();
            this.state = 437;
            this._errHandler.sync(this);
            var _alt = this._interp.adaptivePredict(this._input,36,this._ctx)
            while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
                if(_alt===1) {
                    this.state = 433;
                    this.match(SQLiteParser.COMMA);
                    this.state = 434;
                    this.column_def(); 
                }
                this.state = 439;
                this._errHandler.sync(this);
                _alt = this._interp.adaptivePredict(this._input,36,this._ctx);
            }

            this.state = 444;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 440;
                this.match(SQLiteParser.COMMA);
                this.state = 441;
                this.table_constraint();
                this.state = 446;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 447;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 450;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.WITHOUT) {
                this.state = 448;
                this.match(SQLiteParser.WITHOUT);
                this.state = 449;
                localctx.rowID = this.match(SQLiteParser.IDENTIFIER);
            }

            break;
        case SQLiteParser.AS:
            this.state = 452;
            this.match(SQLiteParser.AS);
            this.state = 453;
            this.select_stmt();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Column_defContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_column_def;
    return this;
}

Column_defContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Column_defContext.prototype.constructor = Column_defContext;

Column_defContext.prototype.column_name = function() {
    return this.getTypedRuleContext(Column_nameContext,0);
};

Column_defContext.prototype.type_name = function() {
    return this.getTypedRuleContext(Type_nameContext,0);
};

Column_defContext.prototype.column_constraint = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_constraintContext);
    } else {
        return this.getTypedRuleContext(Column_constraintContext,i);
    }
};




SQLiteParser.Column_defContext = Column_defContext;

SQLiteParser.prototype.column_def = function() {

    var localctx = new Column_defContext(this, this._ctx, this.state);
    this.enterRule(localctx, 30, SQLiteParser.RULE_column_def);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 456;
        this.column_name();
        this.state = 458;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,40,this._ctx);
        if(la_===1) {
            this.state = 457;
            this.type_name();

        }
        this.state = 463;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,41,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 460;
                this.column_constraint(); 
            }
            this.state = 465;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,41,this._ctx);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Type_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_type_name;
    return this;
}

Type_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Type_nameContext.prototype.constructor = Type_nameContext;

Type_nameContext.prototype.name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(NameContext);
    } else {
        return this.getTypedRuleContext(NameContext,i);
    }
};

Type_nameContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Type_nameContext.prototype.signed_number = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Signed_numberContext);
    } else {
        return this.getTypedRuleContext(Signed_numberContext,i);
    }
};

Type_nameContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Type_nameContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};




SQLiteParser.Type_nameContext = Type_nameContext;

SQLiteParser.prototype.type_name = function() {

    var localctx = new Type_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 32, SQLiteParser.RULE_type_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 467; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 466;
        		this.name();
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 469; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,42, this._ctx);
        } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
        this.state = 481;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,43,this._ctx);
        if(la_===1) {
            this.state = 471;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 472;
            this.signed_number();
            this.state = 473;
            this.match(SQLiteParser.CLOSE_PAR);

        } else if(la_===2) {
            this.state = 475;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 476;
            this.signed_number();
            this.state = 477;
            this.match(SQLiteParser.COMMA);
            this.state = 478;
            this.signed_number();
            this.state = 479;
            this.match(SQLiteParser.CLOSE_PAR);

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Column_constraintContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_column_constraint;
    return this;
}

Column_constraintContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Column_constraintContext.prototype.constructor = Column_constraintContext;

Column_constraintContext.prototype.CHECK = function() {
    return this.getToken(SQLiteParser.CHECK, 0);
};

Column_constraintContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Column_constraintContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Column_constraintContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Column_constraintContext.prototype.DEFAULT = function() {
    return this.getToken(SQLiteParser.DEFAULT, 0);
};

Column_constraintContext.prototype.COLLATE = function() {
    return this.getToken(SQLiteParser.COLLATE, 0);
};

Column_constraintContext.prototype.collation_name = function() {
    return this.getTypedRuleContext(Collation_nameContext,0);
};

Column_constraintContext.prototype.foreign_key_clause = function() {
    return this.getTypedRuleContext(Foreign_key_clauseContext,0);
};

Column_constraintContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Column_constraintContext.prototype.CONSTRAINT = function() {
    return this.getToken(SQLiteParser.CONSTRAINT, 0);
};

Column_constraintContext.prototype.name = function() {
    return this.getTypedRuleContext(NameContext,0);
};

Column_constraintContext.prototype.PRIMARY = function() {
    return this.getToken(SQLiteParser.PRIMARY, 0);
};

Column_constraintContext.prototype.KEY = function() {
    return this.getToken(SQLiteParser.KEY, 0);
};

Column_constraintContext.prototype.UNIQUE = function() {
    return this.getToken(SQLiteParser.UNIQUE, 0);
};

Column_constraintContext.prototype.signed_number = function() {
    return this.getTypedRuleContext(Signed_numberContext,0);
};

Column_constraintContext.prototype.literal_value = function() {
    return this.getTypedRuleContext(Literal_valueContext,0);
};

Column_constraintContext.prototype.conflict_clause = function() {
    return this.getTypedRuleContext(Conflict_clauseContext,0);
};

Column_constraintContext.prototype.GENERATED = function() {
    return this.getToken(SQLiteParser.GENERATED, 0);
};

Column_constraintContext.prototype.ALWAYS = function() {
    return this.getToken(SQLiteParser.ALWAYS, 0);
};

Column_constraintContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Column_constraintContext.prototype.NULL = function() {
    return this.getToken(SQLiteParser.NULL, 0);
};

Column_constraintContext.prototype.STORED = function() {
    return this.getToken(SQLiteParser.STORED, 0);
};

Column_constraintContext.prototype.VIRTUAL = function() {
    return this.getToken(SQLiteParser.VIRTUAL, 0);
};

Column_constraintContext.prototype.asc_desc = function() {
    return this.getTypedRuleContext(Asc_descContext,0);
};

Column_constraintContext.prototype.AUTOINCREMENT = function() {
    return this.getToken(SQLiteParser.AUTOINCREMENT, 0);
};




SQLiteParser.Column_constraintContext = Column_constraintContext;

SQLiteParser.prototype.column_constraint = function() {

    var localctx = new Column_constraintContext(this, this._ctx, this.state);
    this.enterRule(localctx, 34, SQLiteParser.RULE_column_constraint);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 485;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.CONSTRAINT) {
            this.state = 483;
            this.match(SQLiteParser.CONSTRAINT);
            this.state = 484;
            this.name();
        }

        this.state = 534;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.PRIMARY:
            this.state = 487;
            this.match(SQLiteParser.PRIMARY);
            this.state = 488;
            this.match(SQLiteParser.KEY);
            this.state = 490;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ASC || _la===SQLiteParser.DESC) {
                this.state = 489;
                this.asc_desc();
            }

            this.state = 493;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ON) {
                this.state = 492;
                this.conflict_clause();
            }

            this.state = 496;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.AUTOINCREMENT) {
                this.state = 495;
                this.match(SQLiteParser.AUTOINCREMENT);
            }

            break;
        case SQLiteParser.NOT:
        case SQLiteParser.UNIQUE:
            this.state = 501;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SQLiteParser.NOT:
                this.state = 498;
                this.match(SQLiteParser.NOT);
                this.state = 499;
                this.match(SQLiteParser.NULL);
                break;
            case SQLiteParser.UNIQUE:
                this.state = 500;
                this.match(SQLiteParser.UNIQUE);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 504;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ON) {
                this.state = 503;
                this.conflict_clause();
            }

            break;
        case SQLiteParser.CHECK:
            this.state = 506;
            this.match(SQLiteParser.CHECK);
            this.state = 507;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 508;
            this.expr(0);
            this.state = 509;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.DEFAULT:
            this.state = 511;
            this.match(SQLiteParser.DEFAULT);
            this.state = 518;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,50,this._ctx);
            switch(la_) {
            case 1:
                this.state = 512;
                this.signed_number();
                break;

            case 2:
                this.state = 513;
                this.literal_value();
                break;

            case 3:
                this.state = 514;
                this.match(SQLiteParser.OPEN_PAR);
                this.state = 515;
                this.expr(0);
                this.state = 516;
                this.match(SQLiteParser.CLOSE_PAR);
                break;

            }
            break;
        case SQLiteParser.COLLATE:
            this.state = 520;
            this.match(SQLiteParser.COLLATE);
            this.state = 521;
            this.collation_name();
            break;
        case SQLiteParser.REFERENCES:
            this.state = 522;
            this.foreign_key_clause();
            break;
        case SQLiteParser.AS:
        case SQLiteParser.GENERATED:
            this.state = 525;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.GENERATED) {
                this.state = 523;
                this.match(SQLiteParser.GENERATED);
                this.state = 524;
                this.match(SQLiteParser.ALWAYS);
            }

            this.state = 527;
            this.match(SQLiteParser.AS);
            this.state = 528;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 529;
            this.expr(0);
            this.state = 530;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 532;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.VIRTUAL || _la===SQLiteParser.STORED) {
                this.state = 531;
                _la = this._input.LA(1);
                if(!(_la===SQLiteParser.VIRTUAL || _la===SQLiteParser.STORED)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
            }

            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Signed_numberContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_signed_number;
    return this;
}

Signed_numberContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Signed_numberContext.prototype.constructor = Signed_numberContext;

Signed_numberContext.prototype.NUMERIC_LITERAL = function() {
    return this.getToken(SQLiteParser.NUMERIC_LITERAL, 0);
};

Signed_numberContext.prototype.PLUS = function() {
    return this.getToken(SQLiteParser.PLUS, 0);
};

Signed_numberContext.prototype.MINUS = function() {
    return this.getToken(SQLiteParser.MINUS, 0);
};




SQLiteParser.Signed_numberContext = Signed_numberContext;

SQLiteParser.prototype.signed_number = function() {

    var localctx = new Signed_numberContext(this, this._ctx, this.state);
    this.enterRule(localctx, 36, SQLiteParser.RULE_signed_number);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 537;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.PLUS || _la===SQLiteParser.MINUS) {
            this.state = 536;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.PLUS || _la===SQLiteParser.MINUS)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 539;
        this.match(SQLiteParser.NUMERIC_LITERAL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Table_constraintContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_table_constraint;
    return this;
}

Table_constraintContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_constraintContext.prototype.constructor = Table_constraintContext;

Table_constraintContext.prototype.CONSTRAINT = function() {
    return this.getToken(SQLiteParser.CONSTRAINT, 0);
};

Table_constraintContext.prototype.name = function() {
    return this.getTypedRuleContext(NameContext,0);
};

Table_constraintContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Table_constraintContext.prototype.indexed_column = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Indexed_columnContext);
    } else {
        return this.getTypedRuleContext(Indexed_columnContext,i);
    }
};

Table_constraintContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Table_constraintContext.prototype.CHECK = function() {
    return this.getToken(SQLiteParser.CHECK, 0);
};

Table_constraintContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Table_constraintContext.prototype.FOREIGN = function() {
    return this.getToken(SQLiteParser.FOREIGN, 0);
};

Table_constraintContext.prototype.KEY = function() {
    return this.getToken(SQLiteParser.KEY, 0);
};

Table_constraintContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Table_constraintContext.prototype.foreign_key_clause = function() {
    return this.getTypedRuleContext(Foreign_key_clauseContext,0);
};

Table_constraintContext.prototype.PRIMARY = function() {
    return this.getToken(SQLiteParser.PRIMARY, 0);
};

Table_constraintContext.prototype.UNIQUE = function() {
    return this.getToken(SQLiteParser.UNIQUE, 0);
};

Table_constraintContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Table_constraintContext.prototype.conflict_clause = function() {
    return this.getTypedRuleContext(Conflict_clauseContext,0);
};




SQLiteParser.Table_constraintContext = Table_constraintContext;

SQLiteParser.prototype.table_constraint = function() {

    var localctx = new Table_constraintContext(this, this._ctx, this.state);
    this.enterRule(localctx, 38, SQLiteParser.RULE_table_constraint);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 543;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.CONSTRAINT) {
            this.state = 541;
            this.match(SQLiteParser.CONSTRAINT);
            this.state = 542;
            this.name();
        }

        this.state = 582;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.PRIMARY:
        case SQLiteParser.UNIQUE:
            this.state = 548;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SQLiteParser.PRIMARY:
                this.state = 545;
                this.match(SQLiteParser.PRIMARY);
                this.state = 546;
                this.match(SQLiteParser.KEY);
                break;
            case SQLiteParser.UNIQUE:
                this.state = 547;
                this.match(SQLiteParser.UNIQUE);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 550;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 551;
            this.indexed_column();
            this.state = 556;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 552;
                this.match(SQLiteParser.COMMA);
                this.state = 553;
                this.indexed_column();
                this.state = 558;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 559;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 561;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ON) {
                this.state = 560;
                this.conflict_clause();
            }

            break;
        case SQLiteParser.CHECK:
            this.state = 563;
            this.match(SQLiteParser.CHECK);
            this.state = 564;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 565;
            this.expr(0);
            this.state = 566;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.FOREIGN:
            this.state = 568;
            this.match(SQLiteParser.FOREIGN);
            this.state = 569;
            this.match(SQLiteParser.KEY);
            this.state = 570;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 571;
            this.column_name();
            this.state = 576;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 572;
                this.match(SQLiteParser.COMMA);
                this.state = 573;
                this.column_name();
                this.state = 578;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 579;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 580;
            this.foreign_key_clause();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Foreign_key_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_foreign_key_clause;
    return this;
}

Foreign_key_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Foreign_key_clauseContext.prototype.constructor = Foreign_key_clauseContext;

Foreign_key_clauseContext.prototype.REFERENCES = function() {
    return this.getToken(SQLiteParser.REFERENCES, 0);
};

Foreign_key_clauseContext.prototype.foreign_table = function() {
    return this.getTypedRuleContext(Foreign_tableContext,0);
};

Foreign_key_clauseContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Foreign_key_clauseContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Foreign_key_clauseContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Foreign_key_clauseContext.prototype.DEFERRABLE = function() {
    return this.getToken(SQLiteParser.DEFERRABLE, 0);
};

Foreign_key_clauseContext.prototype.ON = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.ON);
    } else {
        return this.getToken(SQLiteParser.ON, i);
    }
};


Foreign_key_clauseContext.prototype.MATCH = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.MATCH);
    } else {
        return this.getToken(SQLiteParser.MATCH, i);
    }
};


Foreign_key_clauseContext.prototype.name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(NameContext);
    } else {
        return this.getTypedRuleContext(NameContext,i);
    }
};

Foreign_key_clauseContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Foreign_key_clauseContext.prototype.DELETE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.DELETE);
    } else {
        return this.getToken(SQLiteParser.DELETE, i);
    }
};


Foreign_key_clauseContext.prototype.UPDATE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.UPDATE);
    } else {
        return this.getToken(SQLiteParser.UPDATE, i);
    }
};


Foreign_key_clauseContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Foreign_key_clauseContext.prototype.INITIALLY = function() {
    return this.getToken(SQLiteParser.INITIALLY, 0);
};

Foreign_key_clauseContext.prototype.CASCADE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.CASCADE);
    } else {
        return this.getToken(SQLiteParser.CASCADE, i);
    }
};


Foreign_key_clauseContext.prototype.RESTRICT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.RESTRICT);
    } else {
        return this.getToken(SQLiteParser.RESTRICT, i);
    }
};


Foreign_key_clauseContext.prototype.DEFERRED = function() {
    return this.getToken(SQLiteParser.DEFERRED, 0);
};

Foreign_key_clauseContext.prototype.IMMEDIATE = function() {
    return this.getToken(SQLiteParser.IMMEDIATE, 0);
};

Foreign_key_clauseContext.prototype.SET = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.SET);
    } else {
        return this.getToken(SQLiteParser.SET, i);
    }
};


Foreign_key_clauseContext.prototype.NO = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.NO);
    } else {
        return this.getToken(SQLiteParser.NO, i);
    }
};


Foreign_key_clauseContext.prototype.ACTION = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.ACTION);
    } else {
        return this.getToken(SQLiteParser.ACTION, i);
    }
};


Foreign_key_clauseContext.prototype.NULL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.NULL);
    } else {
        return this.getToken(SQLiteParser.NULL, i);
    }
};


Foreign_key_clauseContext.prototype.DEFAULT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.DEFAULT);
    } else {
        return this.getToken(SQLiteParser.DEFAULT, i);
    }
};





SQLiteParser.Foreign_key_clauseContext = Foreign_key_clauseContext;

SQLiteParser.prototype.foreign_key_clause = function() {

    var localctx = new Foreign_key_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 40, SQLiteParser.RULE_foreign_key_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 584;
        this.match(SQLiteParser.REFERENCES);
        this.state = 585;
        this.foreign_table();
        this.state = 597;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.OPEN_PAR) {
            this.state = 586;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 587;
            this.column_name();
            this.state = 592;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 588;
                this.match(SQLiteParser.COMMA);
                this.state = 589;
                this.column_name();
                this.state = 594;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 595;
            this.match(SQLiteParser.CLOSE_PAR);
        }

        this.state = 613;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.MATCH || _la===SQLiteParser.ON) {
            this.state = 611;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SQLiteParser.ON:
                this.state = 599;
                this.match(SQLiteParser.ON);
                this.state = 600;
                _la = this._input.LA(1);
                if(!(_la===SQLiteParser.DELETE || _la===SQLiteParser.UPDATE)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
                this.state = 607;
                this._errHandler.sync(this);
                switch(this._input.LA(1)) {
                case SQLiteParser.SET:
                    this.state = 601;
                    this.match(SQLiteParser.SET);
                    this.state = 602;
                    _la = this._input.LA(1);
                    if(!(_la===SQLiteParser.DEFAULT || _la===SQLiteParser.NULL)) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                    break;
                case SQLiteParser.CASCADE:
                    this.state = 603;
                    this.match(SQLiteParser.CASCADE);
                    break;
                case SQLiteParser.RESTRICT:
                    this.state = 604;
                    this.match(SQLiteParser.RESTRICT);
                    break;
                case SQLiteParser.NO:
                    this.state = 605;
                    this.match(SQLiteParser.NO);
                    this.state = 606;
                    this.match(SQLiteParser.ACTION);
                    break;
                default:
                    throw new antlr4.error.NoViableAltException(this);
                }
                break;
            case SQLiteParser.MATCH:
                this.state = 609;
                this.match(SQLiteParser.MATCH);
                this.state = 610;
                this.name();
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 615;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 624;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,68,this._ctx);
        if(la_===1) {
            this.state = 617;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.NOT) {
                this.state = 616;
                this.match(SQLiteParser.NOT);
            }

            this.state = 619;
            this.match(SQLiteParser.DEFERRABLE);
            this.state = 622;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.INITIALLY) {
                this.state = 620;
                this.match(SQLiteParser.INITIALLY);
                this.state = 621;
                _la = this._input.LA(1);
                if(!(_la===SQLiteParser.DEFERRED || _la===SQLiteParser.IMMEDIATE)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
            }


        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Conflict_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_conflict_clause;
    return this;
}

Conflict_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Conflict_clauseContext.prototype.constructor = Conflict_clauseContext;

Conflict_clauseContext.prototype.ON = function() {
    return this.getToken(SQLiteParser.ON, 0);
};

Conflict_clauseContext.prototype.CONFLICT = function() {
    return this.getToken(SQLiteParser.CONFLICT, 0);
};

Conflict_clauseContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

Conflict_clauseContext.prototype.ABORT = function() {
    return this.getToken(SQLiteParser.ABORT, 0);
};

Conflict_clauseContext.prototype.FAIL = function() {
    return this.getToken(SQLiteParser.FAIL, 0);
};

Conflict_clauseContext.prototype.IGNORE = function() {
    return this.getToken(SQLiteParser.IGNORE, 0);
};

Conflict_clauseContext.prototype.REPLACE = function() {
    return this.getToken(SQLiteParser.REPLACE, 0);
};




SQLiteParser.Conflict_clauseContext = Conflict_clauseContext;

SQLiteParser.prototype.conflict_clause = function() {

    var localctx = new Conflict_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 42, SQLiteParser.RULE_conflict_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 626;
        this.match(SQLiteParser.ON);
        this.state = 627;
        this.match(SQLiteParser.CONFLICT);
        this.state = 628;
        _la = this._input.LA(1);
        if(!(_la===SQLiteParser.ABORT || _la===SQLiteParser.FAIL || _la===SQLiteParser.IGNORE || _la===SQLiteParser.REPLACE || _la===SQLiteParser.ROLLBACK)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Create_trigger_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_create_trigger_stmt;
    return this;
}

Create_trigger_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Create_trigger_stmtContext.prototype.constructor = Create_trigger_stmtContext;

Create_trigger_stmtContext.prototype.CREATE = function() {
    return this.getToken(SQLiteParser.CREATE, 0);
};

Create_trigger_stmtContext.prototype.TRIGGER = function() {
    return this.getToken(SQLiteParser.TRIGGER, 0);
};

Create_trigger_stmtContext.prototype.trigger_name = function() {
    return this.getTypedRuleContext(Trigger_nameContext,0);
};

Create_trigger_stmtContext.prototype.ON = function() {
    return this.getToken(SQLiteParser.ON, 0);
};

Create_trigger_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_trigger_stmtContext.prototype.BEGIN = function() {
    return this.getToken(SQLiteParser.BEGIN, 0);
};

Create_trigger_stmtContext.prototype.END = function() {
    return this.getToken(SQLiteParser.END, 0);
};

Create_trigger_stmtContext.prototype.DELETE = function() {
    return this.getToken(SQLiteParser.DELETE, 0);
};

Create_trigger_stmtContext.prototype.INSERT = function() {
    return this.getToken(SQLiteParser.INSERT, 0);
};

Create_trigger_stmtContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

Create_trigger_stmtContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Create_trigger_stmtContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

Create_trigger_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Create_trigger_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Create_trigger_stmtContext.prototype.BEFORE = function() {
    return this.getToken(SQLiteParser.BEFORE, 0);
};

Create_trigger_stmtContext.prototype.AFTER = function() {
    return this.getToken(SQLiteParser.AFTER, 0);
};

Create_trigger_stmtContext.prototype.FOR = function() {
    return this.getToken(SQLiteParser.FOR, 0);
};

Create_trigger_stmtContext.prototype.EACH = function() {
    return this.getToken(SQLiteParser.EACH, 0);
};

Create_trigger_stmtContext.prototype.ROW = function() {
    return this.getToken(SQLiteParser.ROW, 0);
};

Create_trigger_stmtContext.prototype.WHEN = function() {
    return this.getToken(SQLiteParser.WHEN, 0);
};

Create_trigger_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Create_trigger_stmtContext.prototype.SCOL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.SCOL);
    } else {
        return this.getToken(SQLiteParser.SCOL, i);
    }
};


Create_trigger_stmtContext.prototype.TEMP = function() {
    return this.getToken(SQLiteParser.TEMP, 0);
};

Create_trigger_stmtContext.prototype.TEMPORARY = function() {
    return this.getToken(SQLiteParser.TEMPORARY, 0);
};

Create_trigger_stmtContext.prototype.UPDATE = function() {
    return this.getToken(SQLiteParser.UPDATE, 0);
};

Create_trigger_stmtContext.prototype.INSTEAD = function() {
    return this.getToken(SQLiteParser.INSTEAD, 0);
};

Create_trigger_stmtContext.prototype.OF = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.OF);
    } else {
        return this.getToken(SQLiteParser.OF, i);
    }
};


Create_trigger_stmtContext.prototype.update_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Update_stmtContext);
    } else {
        return this.getTypedRuleContext(Update_stmtContext,i);
    }
};

Create_trigger_stmtContext.prototype.insert_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Insert_stmtContext);
    } else {
        return this.getTypedRuleContext(Insert_stmtContext,i);
    }
};

Create_trigger_stmtContext.prototype.delete_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Delete_stmtContext);
    } else {
        return this.getTypedRuleContext(Delete_stmtContext,i);
    }
};

Create_trigger_stmtContext.prototype.select_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Select_stmtContext);
    } else {
        return this.getTypedRuleContext(Select_stmtContext,i);
    }
};

Create_trigger_stmtContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Create_trigger_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Create_trigger_stmtContext = Create_trigger_stmtContext;

SQLiteParser.prototype.create_trigger_stmt = function() {

    var localctx = new Create_trigger_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 44, SQLiteParser.RULE_create_trigger_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 630;
        this.match(SQLiteParser.CREATE);
        this.state = 632;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TEMP || _la===SQLiteParser.TEMPORARY) {
            this.state = 631;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.TEMP || _la===SQLiteParser.TEMPORARY)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 634;
        this.match(SQLiteParser.TRIGGER);
        this.state = 638;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,70,this._ctx);
        if(la_===1) {
            this.state = 635;
            this.match(SQLiteParser.IF);
            this.state = 636;
            this.match(SQLiteParser.NOT);
            this.state = 637;
            this.match(SQLiteParser.EXISTS);

        }
        this.state = 643;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,71,this._ctx);
        if(la_===1) {
            this.state = 640;
            this.schema_name();
            this.state = 641;
            this.match(SQLiteParser.DOT);

        }
        this.state = 645;
        this.trigger_name();
        this.state = 650;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case SQLiteParser.BEFORE:
        	this.state = 646;
        	this.match(SQLiteParser.BEFORE);
        	break;
        case SQLiteParser.AFTER:
        	this.state = 647;
        	this.match(SQLiteParser.AFTER);
        	break;
        case SQLiteParser.INSTEAD:
        	this.state = 648;
        	this.match(SQLiteParser.INSTEAD);
        	this.state = 649;
        	this.match(SQLiteParser.OF);
        	break;
        case SQLiteParser.DELETE:
        case SQLiteParser.INSERT:
        case SQLiteParser.UPDATE:
        	break;
        default:
        	break;
        }
        this.state = 666;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.DELETE:
            this.state = 652;
            this.match(SQLiteParser.DELETE);
            break;
        case SQLiteParser.INSERT:
            this.state = 653;
            this.match(SQLiteParser.INSERT);
            break;
        case SQLiteParser.UPDATE:
            this.state = 654;
            this.match(SQLiteParser.UPDATE);
            this.state = 664;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.OF) {
                this.state = 655;
                this.match(SQLiteParser.OF);
                this.state = 656;
                this.column_name();
                this.state = 661;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 657;
                    this.match(SQLiteParser.COMMA);
                    this.state = 658;
                    this.column_name();
                    this.state = 663;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 668;
        this.match(SQLiteParser.ON);
        this.state = 669;
        this.table_name();
        this.state = 673;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.FOR) {
            this.state = 670;
            this.match(SQLiteParser.FOR);
            this.state = 671;
            this.match(SQLiteParser.EACH);
            this.state = 672;
            this.match(SQLiteParser.ROW);
        }

        this.state = 677;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WHEN) {
            this.state = 675;
            this.match(SQLiteParser.WHEN);
            this.state = 676;
            this.expr(0);
        }

        this.state = 679;
        this.match(SQLiteParser.BEGIN);
        this.state = 688; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 684;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,78,this._ctx);
            switch(la_) {
            case 1:
                this.state = 680;
                this.update_stmt();
                break;

            case 2:
                this.state = 681;
                this.insert_stmt();
                break;

            case 3:
                this.state = 682;
                this.delete_stmt();
                break;

            case 4:
                this.state = 683;
                this.select_stmt();
                break;

            }
            this.state = 686;
            this.match(SQLiteParser.SCOL);
            this.state = 690; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SQLiteParser.DEFAULT || _la===SQLiteParser.DELETE || _la===SQLiteParser.INSERT || ((((_la - 122)) & ~0x1f) == 0 && ((1 << (_la - 122)) & ((1 << (SQLiteParser.REPLACE - 122)) | (1 << (SQLiteParser.SELECT - 122)) | (1 << (SQLiteParser.UPDATE - 122)) | (1 << (SQLiteParser.VALUES - 122)) | (1 << (SQLiteParser.WITH - 122)))) !== 0));
        this.state = 692;
        this.match(SQLiteParser.END);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Create_view_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_create_view_stmt;
    return this;
}

Create_view_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Create_view_stmtContext.prototype.constructor = Create_view_stmtContext;

Create_view_stmtContext.prototype.CREATE = function() {
    return this.getToken(SQLiteParser.CREATE, 0);
};

Create_view_stmtContext.prototype.VIEW = function() {
    return this.getToken(SQLiteParser.VIEW, 0);
};

Create_view_stmtContext.prototype.view_name = function() {
    return this.getTypedRuleContext(View_nameContext,0);
};

Create_view_stmtContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Create_view_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Create_view_stmtContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

Create_view_stmtContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Create_view_stmtContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

Create_view_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Create_view_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Create_view_stmtContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Create_view_stmtContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Create_view_stmtContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Create_view_stmtContext.prototype.TEMP = function() {
    return this.getToken(SQLiteParser.TEMP, 0);
};

Create_view_stmtContext.prototype.TEMPORARY = function() {
    return this.getToken(SQLiteParser.TEMPORARY, 0);
};

Create_view_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Create_view_stmtContext = Create_view_stmtContext;

SQLiteParser.prototype.create_view_stmt = function() {

    var localctx = new Create_view_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 46, SQLiteParser.RULE_create_view_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 694;
        this.match(SQLiteParser.CREATE);
        this.state = 696;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.TEMP || _la===SQLiteParser.TEMPORARY) {
            this.state = 695;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.TEMP || _la===SQLiteParser.TEMPORARY)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

        this.state = 698;
        this.match(SQLiteParser.VIEW);
        this.state = 702;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,81,this._ctx);
        if(la_===1) {
            this.state = 699;
            this.match(SQLiteParser.IF);
            this.state = 700;
            this.match(SQLiteParser.NOT);
            this.state = 701;
            this.match(SQLiteParser.EXISTS);

        }
        this.state = 707;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,82,this._ctx);
        if(la_===1) {
            this.state = 704;
            this.schema_name();
            this.state = 705;
            this.match(SQLiteParser.DOT);

        }
        this.state = 709;
        this.view_name();
        this.state = 721;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.OPEN_PAR) {
            this.state = 710;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 711;
            this.column_name();
            this.state = 716;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 712;
                this.match(SQLiteParser.COMMA);
                this.state = 713;
                this.column_name();
                this.state = 718;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 719;
            this.match(SQLiteParser.CLOSE_PAR);
        }

        this.state = 723;
        this.match(SQLiteParser.AS);
        this.state = 724;
        this.select_stmt();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Create_virtual_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_create_virtual_table_stmt;
    return this;
}

Create_virtual_table_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Create_virtual_table_stmtContext.prototype.constructor = Create_virtual_table_stmtContext;

Create_virtual_table_stmtContext.prototype.CREATE = function() {
    return this.getToken(SQLiteParser.CREATE, 0);
};

Create_virtual_table_stmtContext.prototype.VIRTUAL = function() {
    return this.getToken(SQLiteParser.VIRTUAL, 0);
};

Create_virtual_table_stmtContext.prototype.TABLE = function() {
    return this.getToken(SQLiteParser.TABLE, 0);
};

Create_virtual_table_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Create_virtual_table_stmtContext.prototype.USING = function() {
    return this.getToken(SQLiteParser.USING, 0);
};

Create_virtual_table_stmtContext.prototype.module_name = function() {
    return this.getTypedRuleContext(Module_nameContext,0);
};

Create_virtual_table_stmtContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

Create_virtual_table_stmtContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Create_virtual_table_stmtContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

Create_virtual_table_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Create_virtual_table_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Create_virtual_table_stmtContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Create_virtual_table_stmtContext.prototype.module_argument = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Module_argumentContext);
    } else {
        return this.getTypedRuleContext(Module_argumentContext,i);
    }
};

Create_virtual_table_stmtContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Create_virtual_table_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Create_virtual_table_stmtContext = Create_virtual_table_stmtContext;

SQLiteParser.prototype.create_virtual_table_stmt = function() {

    var localctx = new Create_virtual_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 48, SQLiteParser.RULE_create_virtual_table_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 726;
        this.match(SQLiteParser.CREATE);
        this.state = 727;
        this.match(SQLiteParser.VIRTUAL);
        this.state = 728;
        this.match(SQLiteParser.TABLE);
        this.state = 732;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,85,this._ctx);
        if(la_===1) {
            this.state = 729;
            this.match(SQLiteParser.IF);
            this.state = 730;
            this.match(SQLiteParser.NOT);
            this.state = 731;
            this.match(SQLiteParser.EXISTS);

        }
        this.state = 737;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,86,this._ctx);
        if(la_===1) {
            this.state = 734;
            this.schema_name();
            this.state = 735;
            this.match(SQLiteParser.DOT);

        }
        this.state = 739;
        this.table_name();
        this.state = 740;
        this.match(SQLiteParser.USING);
        this.state = 741;
        this.module_name();
        this.state = 753;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.OPEN_PAR) {
            this.state = 742;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 743;
            this.module_argument();
            this.state = 748;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 744;
                this.match(SQLiteParser.COMMA);
                this.state = 745;
                this.module_argument();
                this.state = 750;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 751;
            this.match(SQLiteParser.CLOSE_PAR);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function With_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_with_clause;
    return this;
}

With_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
With_clauseContext.prototype.constructor = With_clauseContext;

With_clauseContext.prototype.WITH = function() {
    return this.getToken(SQLiteParser.WITH, 0);
};

With_clauseContext.prototype.cte_table_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Cte_table_nameContext);
    } else {
        return this.getTypedRuleContext(Cte_table_nameContext,i);
    }
};

With_clauseContext.prototype.AS = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.AS);
    } else {
        return this.getToken(SQLiteParser.AS, i);
    }
};


With_clauseContext.prototype.OPEN_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.OPEN_PAR);
    } else {
        return this.getToken(SQLiteParser.OPEN_PAR, i);
    }
};


With_clauseContext.prototype.select_stmt = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Select_stmtContext);
    } else {
        return this.getTypedRuleContext(Select_stmtContext,i);
    }
};

With_clauseContext.prototype.CLOSE_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.CLOSE_PAR);
    } else {
        return this.getToken(SQLiteParser.CLOSE_PAR, i);
    }
};


With_clauseContext.prototype.RECURSIVE = function() {
    return this.getToken(SQLiteParser.RECURSIVE, 0);
};

With_clauseContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.With_clauseContext = With_clauseContext;

SQLiteParser.prototype.with_clause = function() {

    var localctx = new With_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 50, SQLiteParser.RULE_with_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 755;
        this.match(SQLiteParser.WITH);
        this.state = 757;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,89,this._ctx);
        if(la_===1) {
            this.state = 756;
            this.match(SQLiteParser.RECURSIVE);

        }
        this.state = 759;
        this.cte_table_name();
        this.state = 760;
        this.match(SQLiteParser.AS);
        this.state = 761;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 762;
        this.select_stmt();
        this.state = 763;
        this.match(SQLiteParser.CLOSE_PAR);
        this.state = 773;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 764;
            this.match(SQLiteParser.COMMA);
            this.state = 765;
            this.cte_table_name();
            this.state = 766;
            this.match(SQLiteParser.AS);
            this.state = 767;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 768;
            this.select_stmt();
            this.state = 769;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 775;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Cte_table_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_cte_table_name;
    return this;
}

Cte_table_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Cte_table_nameContext.prototype.constructor = Cte_table_nameContext;

Cte_table_nameContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Cte_table_nameContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Cte_table_nameContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Cte_table_nameContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Cte_table_nameContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Cte_table_nameContext = Cte_table_nameContext;

SQLiteParser.prototype.cte_table_name = function() {

    var localctx = new Cte_table_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 52, SQLiteParser.RULE_cte_table_name);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 776;
        this.table_name();
        this.state = 788;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.OPEN_PAR) {
            this.state = 777;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 778;
            this.column_name();
            this.state = 783;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 779;
                this.match(SQLiteParser.COMMA);
                this.state = 780;
                this.column_name();
                this.state = 785;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 786;
            this.match(SQLiteParser.CLOSE_PAR);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Recursive_cteContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_recursive_cte;
    return this;
}

Recursive_cteContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Recursive_cteContext.prototype.constructor = Recursive_cteContext;

Recursive_cteContext.prototype.cte_table_name = function() {
    return this.getTypedRuleContext(Cte_table_nameContext,0);
};

Recursive_cteContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Recursive_cteContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Recursive_cteContext.prototype.initial_select = function() {
    return this.getTypedRuleContext(Initial_selectContext,0);
};

Recursive_cteContext.prototype.UNION = function() {
    return this.getToken(SQLiteParser.UNION, 0);
};

Recursive_cteContext.prototype.recursive_select = function() {
    return this.getTypedRuleContext(Recursive_selectContext,0);
};

Recursive_cteContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Recursive_cteContext.prototype.ALL = function() {
    return this.getToken(SQLiteParser.ALL, 0);
};




SQLiteParser.Recursive_cteContext = Recursive_cteContext;

SQLiteParser.prototype.recursive_cte = function() {

    var localctx = new Recursive_cteContext(this, this._ctx, this.state);
    this.enterRule(localctx, 54, SQLiteParser.RULE_recursive_cte);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 790;
        this.cte_table_name();
        this.state = 791;
        this.match(SQLiteParser.AS);
        this.state = 792;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 793;
        this.initial_select();
        this.state = 794;
        this.match(SQLiteParser.UNION);
        this.state = 796;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ALL) {
            this.state = 795;
            this.match(SQLiteParser.ALL);
        }

        this.state = 798;
        this.recursive_select();
        this.state = 799;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Common_table_expressionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_common_table_expression;
    return this;
}

Common_table_expressionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Common_table_expressionContext.prototype.constructor = Common_table_expressionContext;

Common_table_expressionContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Common_table_expressionContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Common_table_expressionContext.prototype.OPEN_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.OPEN_PAR);
    } else {
        return this.getToken(SQLiteParser.OPEN_PAR, i);
    }
};


Common_table_expressionContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Common_table_expressionContext.prototype.CLOSE_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.CLOSE_PAR);
    } else {
        return this.getToken(SQLiteParser.CLOSE_PAR, i);
    }
};


Common_table_expressionContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Common_table_expressionContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Common_table_expressionContext = Common_table_expressionContext;

SQLiteParser.prototype.common_table_expression = function() {

    var localctx = new Common_table_expressionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 56, SQLiteParser.RULE_common_table_expression);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 801;
        this.table_name();
        this.state = 813;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.OPEN_PAR) {
            this.state = 802;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 803;
            this.column_name();
            this.state = 808;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 804;
                this.match(SQLiteParser.COMMA);
                this.state = 805;
                this.column_name();
                this.state = 810;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 811;
            this.match(SQLiteParser.CLOSE_PAR);
        }

        this.state = 815;
        this.match(SQLiteParser.AS);
        this.state = 816;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 817;
        this.select_stmt();
        this.state = 818;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Delete_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_delete_stmt;
    return this;
}

Delete_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Delete_stmtContext.prototype.constructor = Delete_stmtContext;

Delete_stmtContext.prototype.DELETE = function() {
    return this.getToken(SQLiteParser.DELETE, 0);
};

Delete_stmtContext.prototype.FROM = function() {
    return this.getToken(SQLiteParser.FROM, 0);
};

Delete_stmtContext.prototype.qualified_table_name = function() {
    return this.getTypedRuleContext(Qualified_table_nameContext,0);
};

Delete_stmtContext.prototype.with_clause = function() {
    return this.getTypedRuleContext(With_clauseContext,0);
};

Delete_stmtContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Delete_stmtContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};




SQLiteParser.Delete_stmtContext = Delete_stmtContext;

SQLiteParser.prototype.delete_stmt = function() {

    var localctx = new Delete_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 58, SQLiteParser.RULE_delete_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 821;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 820;
            this.with_clause();
        }

        this.state = 823;
        this.match(SQLiteParser.DELETE);
        this.state = 824;
        this.match(SQLiteParser.FROM);
        this.state = 825;
        this.qualified_table_name();
        this.state = 828;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WHERE) {
            this.state = 826;
            this.match(SQLiteParser.WHERE);
            this.state = 827;
            this.expr(0);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Delete_stmt_limitedContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_delete_stmt_limited;
    return this;
}

Delete_stmt_limitedContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Delete_stmt_limitedContext.prototype.constructor = Delete_stmt_limitedContext;

Delete_stmt_limitedContext.prototype.DELETE = function() {
    return this.getToken(SQLiteParser.DELETE, 0);
};

Delete_stmt_limitedContext.prototype.FROM = function() {
    return this.getToken(SQLiteParser.FROM, 0);
};

Delete_stmt_limitedContext.prototype.qualified_table_name = function() {
    return this.getTypedRuleContext(Qualified_table_nameContext,0);
};

Delete_stmt_limitedContext.prototype.with_clause = function() {
    return this.getTypedRuleContext(With_clauseContext,0);
};

Delete_stmt_limitedContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Delete_stmt_limitedContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Delete_stmt_limitedContext.prototype.limit_stmt = function() {
    return this.getTypedRuleContext(Limit_stmtContext,0);
};

Delete_stmt_limitedContext.prototype.order_by_stmt = function() {
    return this.getTypedRuleContext(Order_by_stmtContext,0);
};




SQLiteParser.Delete_stmt_limitedContext = Delete_stmt_limitedContext;

SQLiteParser.prototype.delete_stmt_limited = function() {

    var localctx = new Delete_stmt_limitedContext(this, this._ctx, this.state);
    this.enterRule(localctx, 60, SQLiteParser.RULE_delete_stmt_limited);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 831;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 830;
            this.with_clause();
        }

        this.state = 833;
        this.match(SQLiteParser.DELETE);
        this.state = 834;
        this.match(SQLiteParser.FROM);
        this.state = 835;
        this.qualified_table_name();
        this.state = 838;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WHERE) {
            this.state = 836;
            this.match(SQLiteParser.WHERE);
            this.state = 837;
            this.expr(0);
        }

        this.state = 844;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.LIMIT || _la===SQLiteParser.ORDER) {
            this.state = 841;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ORDER) {
                this.state = 840;
                this.order_by_stmt();
            }

            this.state = 843;
            this.limit_stmt();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Detach_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_detach_stmt;
    return this;
}

Detach_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Detach_stmtContext.prototype.constructor = Detach_stmtContext;

Detach_stmtContext.prototype.DETACH = function() {
    return this.getToken(SQLiteParser.DETACH, 0);
};

Detach_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Detach_stmtContext.prototype.DATABASE = function() {
    return this.getToken(SQLiteParser.DATABASE, 0);
};




SQLiteParser.Detach_stmtContext = Detach_stmtContext;

SQLiteParser.prototype.detach_stmt = function() {

    var localctx = new Detach_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 62, SQLiteParser.RULE_detach_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 846;
        this.match(SQLiteParser.DETACH);
        this.state = 848;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,102,this._ctx);
        if(la_===1) {
            this.state = 847;
            this.match(SQLiteParser.DATABASE);

        }
        this.state = 850;
        this.schema_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Drop_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_drop_stmt;
    this.object = null; // Token
    return this;
}

Drop_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Drop_stmtContext.prototype.constructor = Drop_stmtContext;

Drop_stmtContext.prototype.DROP = function() {
    return this.getToken(SQLiteParser.DROP, 0);
};

Drop_stmtContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};

Drop_stmtContext.prototype.INDEX = function() {
    return this.getToken(SQLiteParser.INDEX, 0);
};

Drop_stmtContext.prototype.TABLE = function() {
    return this.getToken(SQLiteParser.TABLE, 0);
};

Drop_stmtContext.prototype.TRIGGER = function() {
    return this.getToken(SQLiteParser.TRIGGER, 0);
};

Drop_stmtContext.prototype.VIEW = function() {
    return this.getToken(SQLiteParser.VIEW, 0);
};

Drop_stmtContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

Drop_stmtContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

Drop_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Drop_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};




SQLiteParser.Drop_stmtContext = Drop_stmtContext;

SQLiteParser.prototype.drop_stmt = function() {

    var localctx = new Drop_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 64, SQLiteParser.RULE_drop_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 852;
        this.match(SQLiteParser.DROP);
        this.state = 853;
        localctx.object = this._input.LT(1);
        _la = this._input.LA(1);
        if(!(_la===SQLiteParser.INDEX || ((((_la - 131)) & ~0x1f) == 0 && ((1 << (_la - 131)) & ((1 << (SQLiteParser.TABLE - 131)) | (1 << (SQLiteParser.TRIGGER - 131)) | (1 << (SQLiteParser.VIEW - 131)))) !== 0))) {
            localctx.object = this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 856;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,103,this._ctx);
        if(la_===1) {
            this.state = 854;
            this.match(SQLiteParser.IF);
            this.state = 855;
            this.match(SQLiteParser.EXISTS);

        }
        this.state = 861;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,104,this._ctx);
        if(la_===1) {
            this.state = 858;
            this.schema_name();
            this.state = 859;
            this.match(SQLiteParser.DOT);

        }
        this.state = 863;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function ExprContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_expr;
    return this;
}

ExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
ExprContext.prototype.constructor = ExprContext;

ExprContext.prototype.literal_value = function() {
    return this.getTypedRuleContext(Literal_valueContext,0);
};

ExprContext.prototype.BIND_PARAMETER = function() {
    return this.getToken(SQLiteParser.BIND_PARAMETER, 0);
};

ExprContext.prototype.column_name = function() {
    return this.getTypedRuleContext(Column_nameContext,0);
};

ExprContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

ExprContext.prototype.DOT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.DOT);
    } else {
        return this.getToken(SQLiteParser.DOT, i);
    }
};


ExprContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

ExprContext.prototype.unary_operator = function() {
    return this.getTypedRuleContext(Unary_operatorContext,0);
};

ExprContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

ExprContext.prototype.function_name = function() {
    return this.getTypedRuleContext(Function_nameContext,0);
};

ExprContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

ExprContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

ExprContext.prototype.STAR = function() {
    return this.getToken(SQLiteParser.STAR, 0);
};

ExprContext.prototype.filter_clause = function() {
    return this.getTypedRuleContext(Filter_clauseContext,0);
};

ExprContext.prototype.over_clause = function() {
    return this.getTypedRuleContext(Over_clauseContext,0);
};

ExprContext.prototype.DISTINCT = function() {
    return this.getToken(SQLiteParser.DISTINCT, 0);
};

ExprContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


ExprContext.prototype.CAST = function() {
    return this.getToken(SQLiteParser.CAST, 0);
};

ExprContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

ExprContext.prototype.type_name = function() {
    return this.getTypedRuleContext(Type_nameContext,0);
};

ExprContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

ExprContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

ExprContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

ExprContext.prototype.CASE = function() {
    return this.getToken(SQLiteParser.CASE, 0);
};

ExprContext.prototype.END = function() {
    return this.getToken(SQLiteParser.END, 0);
};

ExprContext.prototype.WHEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.WHEN);
    } else {
        return this.getToken(SQLiteParser.WHEN, i);
    }
};


ExprContext.prototype.THEN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.THEN);
    } else {
        return this.getToken(SQLiteParser.THEN, i);
    }
};


ExprContext.prototype.ELSE = function() {
    return this.getToken(SQLiteParser.ELSE, 0);
};

ExprContext.prototype.raise_function = function() {
    return this.getTypedRuleContext(Raise_functionContext,0);
};

ExprContext.prototype.PIPE2 = function() {
    return this.getToken(SQLiteParser.PIPE2, 0);
};

ExprContext.prototype.DIV = function() {
    return this.getToken(SQLiteParser.DIV, 0);
};

ExprContext.prototype.MOD = function() {
    return this.getToken(SQLiteParser.MOD, 0);
};

ExprContext.prototype.PLUS = function() {
    return this.getToken(SQLiteParser.PLUS, 0);
};

ExprContext.prototype.MINUS = function() {
    return this.getToken(SQLiteParser.MINUS, 0);
};

ExprContext.prototype.LT2 = function() {
    return this.getToken(SQLiteParser.LT2, 0);
};

ExprContext.prototype.GT2 = function() {
    return this.getToken(SQLiteParser.GT2, 0);
};

ExprContext.prototype.AMP = function() {
    return this.getToken(SQLiteParser.AMP, 0);
};

ExprContext.prototype.PIPE = function() {
    return this.getToken(SQLiteParser.PIPE, 0);
};

ExprContext.prototype.LT = function() {
    return this.getToken(SQLiteParser.LT, 0);
};

ExprContext.prototype.LT_EQ = function() {
    return this.getToken(SQLiteParser.LT_EQ, 0);
};

ExprContext.prototype.GT = function() {
    return this.getToken(SQLiteParser.GT, 0);
};

ExprContext.prototype.GT_EQ = function() {
    return this.getToken(SQLiteParser.GT_EQ, 0);
};

ExprContext.prototype.ASSIGN = function() {
    return this.getToken(SQLiteParser.ASSIGN, 0);
};

ExprContext.prototype.EQ = function() {
    return this.getToken(SQLiteParser.EQ, 0);
};

ExprContext.prototype.NOT_EQ1 = function() {
    return this.getToken(SQLiteParser.NOT_EQ1, 0);
};

ExprContext.prototype.NOT_EQ2 = function() {
    return this.getToken(SQLiteParser.NOT_EQ2, 0);
};

ExprContext.prototype.IS = function() {
    return this.getToken(SQLiteParser.IS, 0);
};

ExprContext.prototype.IN = function() {
    return this.getToken(SQLiteParser.IN, 0);
};

ExprContext.prototype.LIKE = function() {
    return this.getToken(SQLiteParser.LIKE, 0);
};

ExprContext.prototype.GLOB = function() {
    return this.getToken(SQLiteParser.GLOB, 0);
};

ExprContext.prototype.MATCH = function() {
    return this.getToken(SQLiteParser.MATCH, 0);
};

ExprContext.prototype.REGEXP = function() {
    return this.getToken(SQLiteParser.REGEXP, 0);
};

ExprContext.prototype.AND = function() {
    return this.getToken(SQLiteParser.AND, 0);
};

ExprContext.prototype.OR = function() {
    return this.getToken(SQLiteParser.OR, 0);
};

ExprContext.prototype.BETWEEN = function() {
    return this.getToken(SQLiteParser.BETWEEN, 0);
};

ExprContext.prototype.COLLATE = function() {
    return this.getToken(SQLiteParser.COLLATE, 0);
};

ExprContext.prototype.collation_name = function() {
    return this.getTypedRuleContext(Collation_nameContext,0);
};

ExprContext.prototype.ESCAPE = function() {
    return this.getToken(SQLiteParser.ESCAPE, 0);
};

ExprContext.prototype.ISNULL = function() {
    return this.getToken(SQLiteParser.ISNULL, 0);
};

ExprContext.prototype.NOTNULL = function() {
    return this.getToken(SQLiteParser.NOTNULL, 0);
};

ExprContext.prototype.NULL = function() {
    return this.getToken(SQLiteParser.NULL, 0);
};

ExprContext.prototype.table_function_name = function() {
    return this.getTypedRuleContext(Table_function_nameContext,0);
};



SQLiteParser.prototype.expr = function(_p) {
	if(_p===undefined) {
	    _p = 0;
	}
    var _parentctx = this._ctx;
    var _parentState = this.state;
    var localctx = new ExprContext(this, this._ctx, _parentState);
    var _prevctx = localctx;
    var _startState = 66;
    this.enterRecursionRule(localctx, 66, SQLiteParser.RULE_expr, _p);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 953;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,118,this._ctx);
        switch(la_) {
        case 1:
            this.state = 866;
            this.literal_value();
            break;

        case 2:
            this.state = 867;
            this.match(SQLiteParser.BIND_PARAMETER);
            break;

        case 3:
            this.state = 876;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,106,this._ctx);
            if(la_===1) {
                this.state = 871;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,105,this._ctx);
                if(la_===1) {
                    this.state = 868;
                    this.schema_name();
                    this.state = 869;
                    this.match(SQLiteParser.DOT);

                }
                this.state = 873;
                this.table_name();
                this.state = 874;
                this.match(SQLiteParser.DOT);

            }
            this.state = 878;
            this.column_name();
            break;

        case 4:
            this.state = 879;
            this.unary_operator();
            this.state = 880;
            this.expr(21);
            break;

        case 5:
            this.state = 882;
            this.function_name();
            this.state = 883;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 896;
            this._errHandler.sync(this);
            switch (this._input.LA(1)) {
            case SQLiteParser.OPEN_PAR:
            case SQLiteParser.PLUS:
            case SQLiteParser.MINUS:
            case SQLiteParser.TILDE:
            case SQLiteParser.ABORT:
            case SQLiteParser.ACTION:
            case SQLiteParser.ADD:
            case SQLiteParser.AFTER:
            case SQLiteParser.ALL:
            case SQLiteParser.ALTER:
            case SQLiteParser.ANALYZE:
            case SQLiteParser.AND:
            case SQLiteParser.AS:
            case SQLiteParser.ASC:
            case SQLiteParser.ATTACH:
            case SQLiteParser.AUTOINCREMENT:
            case SQLiteParser.BEFORE:
            case SQLiteParser.BEGIN:
            case SQLiteParser.BETWEEN:
            case SQLiteParser.BY:
            case SQLiteParser.CASCADE:
            case SQLiteParser.CASE:
            case SQLiteParser.CAST:
            case SQLiteParser.CHECK:
            case SQLiteParser.COLLATE:
            case SQLiteParser.COLUMN:
            case SQLiteParser.COMMIT:
            case SQLiteParser.CONFLICT:
            case SQLiteParser.CONSTRAINT:
            case SQLiteParser.CREATE:
            case SQLiteParser.CROSS:
            case SQLiteParser.CURRENT_DATE:
            case SQLiteParser.CURRENT_TIME:
            case SQLiteParser.CURRENT_TIMESTAMP:
            case SQLiteParser.DATABASE:
            case SQLiteParser.DEFAULT:
            case SQLiteParser.DEFERRABLE:
            case SQLiteParser.DEFERRED:
            case SQLiteParser.DELETE:
            case SQLiteParser.DESC:
            case SQLiteParser.DETACH:
            case SQLiteParser.DISTINCT:
            case SQLiteParser.DROP:
            case SQLiteParser.EACH:
            case SQLiteParser.ELSE:
            case SQLiteParser.END:
            case SQLiteParser.ESCAPE:
            case SQLiteParser.EXCEPT:
            case SQLiteParser.EXCLUSIVE:
            case SQLiteParser.EXISTS:
            case SQLiteParser.EXPLAIN:
            case SQLiteParser.FAIL:
            case SQLiteParser.FOR:
            case SQLiteParser.FOREIGN:
            case SQLiteParser.FROM:
            case SQLiteParser.FULL:
            case SQLiteParser.GLOB:
            case SQLiteParser.GROUP:
            case SQLiteParser.HAVING:
            case SQLiteParser.IF:
            case SQLiteParser.IGNORE:
            case SQLiteParser.IMMEDIATE:
            case SQLiteParser.IN:
            case SQLiteParser.INDEX:
            case SQLiteParser.INDEXED:
            case SQLiteParser.INITIALLY:
            case SQLiteParser.INNER:
            case SQLiteParser.INSERT:
            case SQLiteParser.INSTEAD:
            case SQLiteParser.INTERSECT:
            case SQLiteParser.INTO:
            case SQLiteParser.IS:
            case SQLiteParser.ISNULL:
            case SQLiteParser.JOIN:
            case SQLiteParser.KEY:
            case SQLiteParser.LEFT:
            case SQLiteParser.LIKE:
            case SQLiteParser.LIMIT:
            case SQLiteParser.MATCH:
            case SQLiteParser.NATURAL:
            case SQLiteParser.NO:
            case SQLiteParser.NOT:
            case SQLiteParser.NOTNULL:
            case SQLiteParser.NULL:
            case SQLiteParser.OF:
            case SQLiteParser.OFFSET:
            case SQLiteParser.ON:
            case SQLiteParser.OR:
            case SQLiteParser.ORDER:
            case SQLiteParser.OUTER:
            case SQLiteParser.PLAN:
            case SQLiteParser.PRAGMA:
            case SQLiteParser.PRIMARY:
            case SQLiteParser.QUERY:
            case SQLiteParser.RAISE:
            case SQLiteParser.RECURSIVE:
            case SQLiteParser.REFERENCES:
            case SQLiteParser.REGEXP:
            case SQLiteParser.REINDEX:
            case SQLiteParser.RELEASE:
            case SQLiteParser.RENAME:
            case SQLiteParser.REPLACE:
            case SQLiteParser.RESTRICT:
            case SQLiteParser.RIGHT:
            case SQLiteParser.ROLLBACK:
            case SQLiteParser.ROW:
            case SQLiteParser.ROWS:
            case SQLiteParser.SAVEPOINT:
            case SQLiteParser.SELECT:
            case SQLiteParser.SET:
            case SQLiteParser.TABLE:
            case SQLiteParser.TEMP:
            case SQLiteParser.TEMPORARY:
            case SQLiteParser.THEN:
            case SQLiteParser.TO:
            case SQLiteParser.TRANSACTION:
            case SQLiteParser.TRIGGER:
            case SQLiteParser.UNION:
            case SQLiteParser.UNIQUE:
            case SQLiteParser.UPDATE:
            case SQLiteParser.USING:
            case SQLiteParser.VACUUM:
            case SQLiteParser.VALUES:
            case SQLiteParser.VIEW:
            case SQLiteParser.VIRTUAL:
            case SQLiteParser.WHEN:
            case SQLiteParser.WHERE:
            case SQLiteParser.WITH:
            case SQLiteParser.WITHOUT:
            case SQLiteParser.FIRST_VALUE:
            case SQLiteParser.OVER:
            case SQLiteParser.PARTITION:
            case SQLiteParser.RANGE:
            case SQLiteParser.PRECEDING:
            case SQLiteParser.UNBOUNDED:
            case SQLiteParser.CURRENT:
            case SQLiteParser.FOLLOWING:
            case SQLiteParser.CUME_DIST:
            case SQLiteParser.DENSE_RANK:
            case SQLiteParser.LAG:
            case SQLiteParser.LAST_VALUE:
            case SQLiteParser.LEAD:
            case SQLiteParser.NTH_VALUE:
            case SQLiteParser.NTILE:
            case SQLiteParser.PERCENT_RANK:
            case SQLiteParser.RANK:
            case SQLiteParser.ROW_NUMBER:
            case SQLiteParser.GENERATED:
            case SQLiteParser.ALWAYS:
            case SQLiteParser.STORED:
            case SQLiteParser.TRUE:
            case SQLiteParser.FALSE:
            case SQLiteParser.WINDOW:
            case SQLiteParser.NULLS:
            case SQLiteParser.FIRST:
            case SQLiteParser.LAST:
            case SQLiteParser.FILTER:
            case SQLiteParser.GROUPS:
            case SQLiteParser.EXCLUDE:
            case SQLiteParser.IDENTIFIER:
            case SQLiteParser.NUMERIC_LITERAL:
            case SQLiteParser.BIND_PARAMETER:
            case SQLiteParser.STRING_LITERAL:
            case SQLiteParser.BLOB_LITERAL:
            	this.state = 885;
            	this._errHandler.sync(this);
            	var la_ = this._interp.adaptivePredict(this._input,107,this._ctx);
            	if(la_===1) {
            	    this.state = 884;
            	    this.match(SQLiteParser.DISTINCT);

            	}
            	this.state = 887;
            	this.expr(0);
            	this.state = 892;
            	this._errHandler.sync(this);
            	_la = this._input.LA(1);
            	while(_la===SQLiteParser.COMMA) {
            	    this.state = 888;
            	    this.match(SQLiteParser.COMMA);
            	    this.state = 889;
            	    this.expr(0);
            	    this.state = 894;
            	    this._errHandler.sync(this);
            	    _la = this._input.LA(1);
            	}
            	break;
            case SQLiteParser.STAR:
            	this.state = 895;
            	this.match(SQLiteParser.STAR);
            	break;
            case SQLiteParser.CLOSE_PAR:
            	break;
            default:
            	break;
            }
            this.state = 898;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 900;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,110,this._ctx);
            if(la_===1) {
                this.state = 899;
                this.filter_clause();

            }
            this.state = 903;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,111,this._ctx);
            if(la_===1) {
                this.state = 902;
                this.over_clause();

            }
            break;

        case 6:
            this.state = 905;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 906;
            this.expr(0);
            this.state = 911;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 907;
                this.match(SQLiteParser.COMMA);
                this.state = 908;
                this.expr(0);
                this.state = 913;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 914;
            this.match(SQLiteParser.CLOSE_PAR);
            break;

        case 7:
            this.state = 916;
            this.match(SQLiteParser.CAST);
            this.state = 917;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 918;
            this.expr(0);
            this.state = 919;
            this.match(SQLiteParser.AS);
            this.state = 920;
            this.type_name();
            this.state = 921;
            this.match(SQLiteParser.CLOSE_PAR);
            break;

        case 8:
            this.state = 927;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.EXISTS || _la===SQLiteParser.NOT) {
                this.state = 924;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===SQLiteParser.NOT) {
                    this.state = 923;
                    this.match(SQLiteParser.NOT);
                }

                this.state = 926;
                this.match(SQLiteParser.EXISTS);
            }

            this.state = 929;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 930;
            this.select_stmt();
            this.state = 931;
            this.match(SQLiteParser.CLOSE_PAR);
            break;

        case 9:
            this.state = 933;
            this.match(SQLiteParser.CASE);
            this.state = 935;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,115,this._ctx);
            if(la_===1) {
                this.state = 934;
                this.expr(0);

            }
            this.state = 942; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            do {
                this.state = 937;
                this.match(SQLiteParser.WHEN);
                this.state = 938;
                this.expr(0);
                this.state = 939;
                this.match(SQLiteParser.THEN);
                this.state = 940;
                this.expr(0);
                this.state = 944; 
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            } while(_la===SQLiteParser.WHEN);
            this.state = 948;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ELSE) {
                this.state = 946;
                this.match(SQLiteParser.ELSE);
                this.state = 947;
                this.expr(0);
            }

            this.state = 950;
            this.match(SQLiteParser.END);
            break;

        case 10:
            this.state = 952;
            this.raise_function();
            break;

        }
        this._ctx.stop = this._input.LT(-1);
        this.state = 1074;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,134,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                if(this._parseListeners!==null) {
                    this.triggerExitRuleEvent();
                }
                _prevctx = localctx;
                this.state = 1072;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,133,this._ctx);
                switch(la_) {
                case 1:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 955;
                    if (!( this.precpred(this._ctx, 20))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 20)");
                    }
                    this.state = 956;
                    this.match(SQLiteParser.PIPE2);
                    this.state = 957;
                    this.expr(21);
                    break;

                case 2:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 958;
                    if (!( this.precpred(this._ctx, 19))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 19)");
                    }
                    this.state = 959;
                    _la = this._input.LA(1);
                    if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.STAR) | (1 << SQLiteParser.DIV) | (1 << SQLiteParser.MOD))) !== 0))) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                    this.state = 960;
                    this.expr(20);
                    break;

                case 3:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 961;
                    if (!( this.precpred(this._ctx, 18))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 18)");
                    }
                    this.state = 962;
                    _la = this._input.LA(1);
                    if(!(_la===SQLiteParser.PLUS || _la===SQLiteParser.MINUS)) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                    this.state = 963;
                    this.expr(19);
                    break;

                case 4:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 964;
                    if (!( this.precpred(this._ctx, 17))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 17)");
                    }
                    this.state = 965;
                    _la = this._input.LA(1);
                    if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.LT2) | (1 << SQLiteParser.GT2) | (1 << SQLiteParser.AMP) | (1 << SQLiteParser.PIPE))) !== 0))) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                    this.state = 966;
                    this.expr(18);
                    break;

                case 5:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 967;
                    if (!( this.precpred(this._ctx, 16))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 16)");
                    }
                    this.state = 968;
                    _la = this._input.LA(1);
                    if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.LT) | (1 << SQLiteParser.LT_EQ) | (1 << SQLiteParser.GT) | (1 << SQLiteParser.GT_EQ))) !== 0))) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                    this.state = 969;
                    this.expr(17);
                    break;

                case 6:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 970;
                    if (!( this.precpred(this._ctx, 15))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 15)");
                    }
                    this.state = 983;
                    this._errHandler.sync(this);
                    var la_ = this._interp.adaptivePredict(this._input,119,this._ctx);
                    switch(la_) {
                    case 1:
                        this.state = 971;
                        this.match(SQLiteParser.ASSIGN);
                        break;

                    case 2:
                        this.state = 972;
                        this.match(SQLiteParser.EQ);
                        break;

                    case 3:
                        this.state = 973;
                        this.match(SQLiteParser.NOT_EQ1);
                        break;

                    case 4:
                        this.state = 974;
                        this.match(SQLiteParser.NOT_EQ2);
                        break;

                    case 5:
                        this.state = 975;
                        this.match(SQLiteParser.IS);
                        break;

                    case 6:
                        this.state = 976;
                        this.match(SQLiteParser.IS);
                        this.state = 977;
                        this.match(SQLiteParser.NOT);
                        break;

                    case 7:
                        this.state = 978;
                        this.match(SQLiteParser.IN);
                        break;

                    case 8:
                        this.state = 979;
                        this.match(SQLiteParser.LIKE);
                        break;

                    case 9:
                        this.state = 980;
                        this.match(SQLiteParser.GLOB);
                        break;

                    case 10:
                        this.state = 981;
                        this.match(SQLiteParser.MATCH);
                        break;

                    case 11:
                        this.state = 982;
                        this.match(SQLiteParser.REGEXP);
                        break;

                    }
                    this.state = 985;
                    this.expr(16);
                    break;

                case 7:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 986;
                    if (!( this.precpred(this._ctx, 14))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 14)");
                    }
                    this.state = 987;
                    this.match(SQLiteParser.AND);
                    this.state = 988;
                    this.expr(15);
                    break;

                case 8:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 989;
                    if (!( this.precpred(this._ctx, 13))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 13)");
                    }
                    this.state = 990;
                    this.match(SQLiteParser.OR);
                    this.state = 991;
                    this.expr(14);
                    break;

                case 9:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 992;
                    if (!( this.precpred(this._ctx, 6))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)");
                    }
                    this.state = 993;
                    this.match(SQLiteParser.IS);
                    this.state = 995;
                    this._errHandler.sync(this);
                    var la_ = this._interp.adaptivePredict(this._input,120,this._ctx);
                    if(la_===1) {
                        this.state = 994;
                        this.match(SQLiteParser.NOT);

                    }
                    this.state = 997;
                    this.expr(7);
                    break;

                case 10:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 998;
                    if (!( this.precpred(this._ctx, 5))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)");
                    }
                    this.state = 1000;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                    if(_la===SQLiteParser.NOT) {
                        this.state = 999;
                        this.match(SQLiteParser.NOT);
                    }

                    this.state = 1002;
                    this.match(SQLiteParser.BETWEEN);
                    this.state = 1003;
                    this.expr(0);
                    this.state = 1004;
                    this.match(SQLiteParser.AND);
                    this.state = 1005;
                    this.expr(6);
                    break;

                case 11:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 1007;
                    if (!( this.precpred(this._ctx, 9))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 9)");
                    }
                    this.state = 1008;
                    this.match(SQLiteParser.COLLATE);
                    this.state = 1009;
                    this.collation_name();
                    break;

                case 12:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 1010;
                    if (!( this.precpred(this._ctx, 8))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)");
                    }
                    this.state = 1012;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                    if(_la===SQLiteParser.NOT) {
                        this.state = 1011;
                        this.match(SQLiteParser.NOT);
                    }

                    this.state = 1014;
                    _la = this._input.LA(1);
                    if(!(((((_la - 77)) & ~0x1f) == 0 && ((1 << (_la - 77)) & ((1 << (SQLiteParser.GLOB - 77)) | (1 << (SQLiteParser.LIKE - 77)) | (1 << (SQLiteParser.MATCH - 77)))) !== 0) || _la===SQLiteParser.REGEXP)) {
                    this._errHandler.recoverInline(this);
                    }
                    else {
                    	this._errHandler.reportMatch(this);
                        this.consume();
                    }
                    this.state = 1015;
                    this.expr(0);
                    this.state = 1018;
                    this._errHandler.sync(this);
                    var la_ = this._interp.adaptivePredict(this._input,123,this._ctx);
                    if(la_===1) {
                        this.state = 1016;
                        this.match(SQLiteParser.ESCAPE);
                        this.state = 1017;
                        this.expr(0);

                    }
                    break;

                case 13:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 1020;
                    if (!( this.precpred(this._ctx, 7))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)");
                    }
                    this.state = 1025;
                    this._errHandler.sync(this);
                    switch(this._input.LA(1)) {
                    case SQLiteParser.ISNULL:
                        this.state = 1021;
                        this.match(SQLiteParser.ISNULL);
                        break;
                    case SQLiteParser.NOTNULL:
                        this.state = 1022;
                        this.match(SQLiteParser.NOTNULL);
                        break;
                    case SQLiteParser.NOT:
                        this.state = 1023;
                        this.match(SQLiteParser.NOT);
                        this.state = 1024;
                        this.match(SQLiteParser.NULL);
                        break;
                    default:
                        throw new antlr4.error.NoViableAltException(this);
                    }
                    break;

                case 14:
                    localctx = new ExprContext(this, _parentctx, _parentState);
                    this.pushNewRecursionContext(localctx, _startState, SQLiteParser.RULE_expr);
                    this.state = 1027;
                    if (!( this.precpred(this._ctx, 4))) {
                        throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)");
                    }
                    this.state = 1029;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                    if(_la===SQLiteParser.NOT) {
                        this.state = 1028;
                        this.match(SQLiteParser.NOT);
                    }

                    this.state = 1031;
                    this.match(SQLiteParser.IN);
                    this.state = 1070;
                    this._errHandler.sync(this);
                    var la_ = this._interp.adaptivePredict(this._input,132,this._ctx);
                    switch(la_) {
                    case 1:
                        this.state = 1032;
                        this.match(SQLiteParser.OPEN_PAR);
                        this.state = 1042;
                        this._errHandler.sync(this);
                        var la_ = this._interp.adaptivePredict(this._input,127,this._ctx);
                        if(la_===1) {
                            this.state = 1033;
                            this.select_stmt();

                        } else if(la_===2) {
                            this.state = 1034;
                            this.expr(0);
                            this.state = 1039;
                            this._errHandler.sync(this);
                            _la = this._input.LA(1);
                            while(_la===SQLiteParser.COMMA) {
                                this.state = 1035;
                                this.match(SQLiteParser.COMMA);
                                this.state = 1036;
                                this.expr(0);
                                this.state = 1041;
                                this._errHandler.sync(this);
                                _la = this._input.LA(1);
                            }

                        }
                        this.state = 1044;
                        this.match(SQLiteParser.CLOSE_PAR);
                        break;

                    case 2:
                        this.state = 1048;
                        this._errHandler.sync(this);
                        var la_ = this._interp.adaptivePredict(this._input,128,this._ctx);
                        if(la_===1) {
                            this.state = 1045;
                            this.schema_name();
                            this.state = 1046;
                            this.match(SQLiteParser.DOT);

                        }
                        this.state = 1050;
                        this.table_name();
                        break;

                    case 3:
                        this.state = 1054;
                        this._errHandler.sync(this);
                        var la_ = this._interp.adaptivePredict(this._input,129,this._ctx);
                        if(la_===1) {
                            this.state = 1051;
                            this.schema_name();
                            this.state = 1052;
                            this.match(SQLiteParser.DOT);

                        }
                        this.state = 1056;
                        this.table_function_name();
                        this.state = 1057;
                        this.match(SQLiteParser.OPEN_PAR);
                        this.state = 1066;
                        this._errHandler.sync(this);
                        _la = this._input.LA(1);
                        if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.OPEN_PAR) | (1 << SQLiteParser.PLUS) | (1 << SQLiteParser.MINUS) | (1 << SQLiteParser.TILDE) | (1 << SQLiteParser.ABORT) | (1 << SQLiteParser.ACTION) | (1 << SQLiteParser.ADD) | (1 << SQLiteParser.AFTER) | (1 << SQLiteParser.ALL) | (1 << SQLiteParser.ALTER) | (1 << SQLiteParser.ANALYZE))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SQLiteParser.AND - 32)) | (1 << (SQLiteParser.AS - 32)) | (1 << (SQLiteParser.ASC - 32)) | (1 << (SQLiteParser.ATTACH - 32)) | (1 << (SQLiteParser.AUTOINCREMENT - 32)) | (1 << (SQLiteParser.BEFORE - 32)) | (1 << (SQLiteParser.BEGIN - 32)) | (1 << (SQLiteParser.BETWEEN - 32)) | (1 << (SQLiteParser.BY - 32)) | (1 << (SQLiteParser.CASCADE - 32)) | (1 << (SQLiteParser.CASE - 32)) | (1 << (SQLiteParser.CAST - 32)) | (1 << (SQLiteParser.CHECK - 32)) | (1 << (SQLiteParser.COLLATE - 32)) | (1 << (SQLiteParser.COLUMN - 32)) | (1 << (SQLiteParser.COMMIT - 32)) | (1 << (SQLiteParser.CONFLICT - 32)) | (1 << (SQLiteParser.CONSTRAINT - 32)) | (1 << (SQLiteParser.CREATE - 32)) | (1 << (SQLiteParser.CROSS - 32)) | (1 << (SQLiteParser.CURRENT_DATE - 32)) | (1 << (SQLiteParser.CURRENT_TIME - 32)) | (1 << (SQLiteParser.CURRENT_TIMESTAMP - 32)) | (1 << (SQLiteParser.DATABASE - 32)) | (1 << (SQLiteParser.DEFAULT - 32)) | (1 << (SQLiteParser.DEFERRABLE - 32)) | (1 << (SQLiteParser.DEFERRED - 32)) | (1 << (SQLiteParser.DELETE - 32)) | (1 << (SQLiteParser.DESC - 32)) | (1 << (SQLiteParser.DETACH - 32)) | (1 << (SQLiteParser.DISTINCT - 32)) | (1 << (SQLiteParser.DROP - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SQLiteParser.EACH - 64)) | (1 << (SQLiteParser.ELSE - 64)) | (1 << (SQLiteParser.END - 64)) | (1 << (SQLiteParser.ESCAPE - 64)) | (1 << (SQLiteParser.EXCEPT - 64)) | (1 << (SQLiteParser.EXCLUSIVE - 64)) | (1 << (SQLiteParser.EXISTS - 64)) | (1 << (SQLiteParser.EXPLAIN - 64)) | (1 << (SQLiteParser.FAIL - 64)) | (1 << (SQLiteParser.FOR - 64)) | (1 << (SQLiteParser.FOREIGN - 64)) | (1 << (SQLiteParser.FROM - 64)) | (1 << (SQLiteParser.FULL - 64)) | (1 << (SQLiteParser.GLOB - 64)) | (1 << (SQLiteParser.GROUP - 64)) | (1 << (SQLiteParser.HAVING - 64)) | (1 << (SQLiteParser.IF - 64)) | (1 << (SQLiteParser.IGNORE - 64)) | (1 << (SQLiteParser.IMMEDIATE - 64)) | (1 << (SQLiteParser.IN - 64)) | (1 << (SQLiteParser.INDEX - 64)) | (1 << (SQLiteParser.INDEXED - 64)) | (1 << (SQLiteParser.INITIALLY - 64)) | (1 << (SQLiteParser.INNER - 64)) | (1 << (SQLiteParser.INSERT - 64)) | (1 << (SQLiteParser.INSTEAD - 64)) | (1 << (SQLiteParser.INTERSECT - 64)) | (1 << (SQLiteParser.INTO - 64)) | (1 << (SQLiteParser.IS - 64)) | (1 << (SQLiteParser.ISNULL - 64)) | (1 << (SQLiteParser.JOIN - 64)) | (1 << (SQLiteParser.KEY - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (SQLiteParser.LEFT - 96)) | (1 << (SQLiteParser.LIKE - 96)) | (1 << (SQLiteParser.LIMIT - 96)) | (1 << (SQLiteParser.MATCH - 96)) | (1 << (SQLiteParser.NATURAL - 96)) | (1 << (SQLiteParser.NO - 96)) | (1 << (SQLiteParser.NOT - 96)) | (1 << (SQLiteParser.NOTNULL - 96)) | (1 << (SQLiteParser.NULL - 96)) | (1 << (SQLiteParser.OF - 96)) | (1 << (SQLiteParser.OFFSET - 96)) | (1 << (SQLiteParser.ON - 96)) | (1 << (SQLiteParser.OR - 96)) | (1 << (SQLiteParser.ORDER - 96)) | (1 << (SQLiteParser.OUTER - 96)) | (1 << (SQLiteParser.PLAN - 96)) | (1 << (SQLiteParser.PRAGMA - 96)) | (1 << (SQLiteParser.PRIMARY - 96)) | (1 << (SQLiteParser.QUERY - 96)) | (1 << (SQLiteParser.RAISE - 96)) | (1 << (SQLiteParser.RECURSIVE - 96)) | (1 << (SQLiteParser.REFERENCES - 96)) | (1 << (SQLiteParser.REGEXP - 96)) | (1 << (SQLiteParser.REINDEX - 96)) | (1 << (SQLiteParser.RELEASE - 96)) | (1 << (SQLiteParser.RENAME - 96)) | (1 << (SQLiteParser.REPLACE - 96)) | (1 << (SQLiteParser.RESTRICT - 96)) | (1 << (SQLiteParser.RIGHT - 96)) | (1 << (SQLiteParser.ROLLBACK - 96)) | (1 << (SQLiteParser.ROW - 96)) | (1 << (SQLiteParser.ROWS - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (SQLiteParser.SAVEPOINT - 128)) | (1 << (SQLiteParser.SELECT - 128)) | (1 << (SQLiteParser.SET - 128)) | (1 << (SQLiteParser.TABLE - 128)) | (1 << (SQLiteParser.TEMP - 128)) | (1 << (SQLiteParser.TEMPORARY - 128)) | (1 << (SQLiteParser.THEN - 128)) | (1 << (SQLiteParser.TO - 128)) | (1 << (SQLiteParser.TRANSACTION - 128)) | (1 << (SQLiteParser.TRIGGER - 128)) | (1 << (SQLiteParser.UNION - 128)) | (1 << (SQLiteParser.UNIQUE - 128)) | (1 << (SQLiteParser.UPDATE - 128)) | (1 << (SQLiteParser.USING - 128)) | (1 << (SQLiteParser.VACUUM - 128)) | (1 << (SQLiteParser.VALUES - 128)) | (1 << (SQLiteParser.VIEW - 128)) | (1 << (SQLiteParser.VIRTUAL - 128)) | (1 << (SQLiteParser.WHEN - 128)) | (1 << (SQLiteParser.WHERE - 128)) | (1 << (SQLiteParser.WITH - 128)) | (1 << (SQLiteParser.WITHOUT - 128)) | (1 << (SQLiteParser.FIRST_VALUE - 128)) | (1 << (SQLiteParser.OVER - 128)) | (1 << (SQLiteParser.PARTITION - 128)) | (1 << (SQLiteParser.RANGE - 128)) | (1 << (SQLiteParser.PRECEDING - 128)) | (1 << (SQLiteParser.UNBOUNDED - 128)) | (1 << (SQLiteParser.CURRENT - 128)) | (1 << (SQLiteParser.FOLLOWING - 128)) | (1 << (SQLiteParser.CUME_DIST - 128)) | (1 << (SQLiteParser.DENSE_RANK - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (SQLiteParser.LAG - 160)) | (1 << (SQLiteParser.LAST_VALUE - 160)) | (1 << (SQLiteParser.LEAD - 160)) | (1 << (SQLiteParser.NTH_VALUE - 160)) | (1 << (SQLiteParser.NTILE - 160)) | (1 << (SQLiteParser.PERCENT_RANK - 160)) | (1 << (SQLiteParser.RANK - 160)) | (1 << (SQLiteParser.ROW_NUMBER - 160)) | (1 << (SQLiteParser.GENERATED - 160)) | (1 << (SQLiteParser.ALWAYS - 160)) | (1 << (SQLiteParser.STORED - 160)) | (1 << (SQLiteParser.TRUE - 160)) | (1 << (SQLiteParser.FALSE - 160)) | (1 << (SQLiteParser.WINDOW - 160)) | (1 << (SQLiteParser.NULLS - 160)) | (1 << (SQLiteParser.FIRST - 160)) | (1 << (SQLiteParser.LAST - 160)) | (1 << (SQLiteParser.FILTER - 160)) | (1 << (SQLiteParser.GROUPS - 160)) | (1 << (SQLiteParser.EXCLUDE - 160)) | (1 << (SQLiteParser.IDENTIFIER - 160)) | (1 << (SQLiteParser.NUMERIC_LITERAL - 160)) | (1 << (SQLiteParser.BIND_PARAMETER - 160)) | (1 << (SQLiteParser.STRING_LITERAL - 160)) | (1 << (SQLiteParser.BLOB_LITERAL - 160)))) !== 0)) {
                            this.state = 1058;
                            this.expr(0);
                            this.state = 1063;
                            this._errHandler.sync(this);
                            _la = this._input.LA(1);
                            while(_la===SQLiteParser.COMMA) {
                                this.state = 1059;
                                this.match(SQLiteParser.COMMA);
                                this.state = 1060;
                                this.expr(0);
                                this.state = 1065;
                                this._errHandler.sync(this);
                                _la = this._input.LA(1);
                            }
                        }

                        this.state = 1068;
                        this.match(SQLiteParser.CLOSE_PAR);
                        break;

                    }
                    break;

                } 
            }
            this.state = 1076;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,134,this._ctx);
        }

    } catch( error) {
        if(error instanceof antlr4.error.RecognitionException) {
	        localctx.exception = error;
	        this._errHandler.reportError(this, error);
	        this._errHandler.recover(this, error);
	    } else {
	    	throw error;
	    }
    } finally {
        this.unrollRecursionContexts(_parentctx)
    }
    return localctx;
};


function Raise_functionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_raise_function;
    return this;
}

Raise_functionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Raise_functionContext.prototype.constructor = Raise_functionContext;

Raise_functionContext.prototype.RAISE = function() {
    return this.getToken(SQLiteParser.RAISE, 0);
};

Raise_functionContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Raise_functionContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Raise_functionContext.prototype.IGNORE = function() {
    return this.getToken(SQLiteParser.IGNORE, 0);
};

Raise_functionContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};

Raise_functionContext.prototype.error_message = function() {
    return this.getTypedRuleContext(Error_messageContext,0);
};

Raise_functionContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

Raise_functionContext.prototype.ABORT = function() {
    return this.getToken(SQLiteParser.ABORT, 0);
};

Raise_functionContext.prototype.FAIL = function() {
    return this.getToken(SQLiteParser.FAIL, 0);
};




SQLiteParser.Raise_functionContext = Raise_functionContext;

SQLiteParser.prototype.raise_function = function() {

    var localctx = new Raise_functionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 68, SQLiteParser.RULE_raise_function);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1077;
        this.match(SQLiteParser.RAISE);
        this.state = 1078;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1083;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.IGNORE:
            this.state = 1079;
            this.match(SQLiteParser.IGNORE);
            break;
        case SQLiteParser.ABORT:
        case SQLiteParser.FAIL:
        case SQLiteParser.ROLLBACK:
            this.state = 1080;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.ABORT || _la===SQLiteParser.FAIL || _la===SQLiteParser.ROLLBACK)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1081;
            this.match(SQLiteParser.COMMA);
            this.state = 1082;
            this.error_message();
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1085;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Literal_valueContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_literal_value;
    return this;
}

Literal_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Literal_valueContext.prototype.constructor = Literal_valueContext;

Literal_valueContext.prototype.NUMERIC_LITERAL = function() {
    return this.getToken(SQLiteParser.NUMERIC_LITERAL, 0);
};

Literal_valueContext.prototype.STRING_LITERAL = function() {
    return this.getToken(SQLiteParser.STRING_LITERAL, 0);
};

Literal_valueContext.prototype.BLOB_LITERAL = function() {
    return this.getToken(SQLiteParser.BLOB_LITERAL, 0);
};

Literal_valueContext.prototype.NULL = function() {
    return this.getToken(SQLiteParser.NULL, 0);
};

Literal_valueContext.prototype.TRUE = function() {
    return this.getToken(SQLiteParser.TRUE, 0);
};

Literal_valueContext.prototype.FALSE = function() {
    return this.getToken(SQLiteParser.FALSE, 0);
};

Literal_valueContext.prototype.CURRENT_TIME = function() {
    return this.getToken(SQLiteParser.CURRENT_TIME, 0);
};

Literal_valueContext.prototype.CURRENT_DATE = function() {
    return this.getToken(SQLiteParser.CURRENT_DATE, 0);
};

Literal_valueContext.prototype.CURRENT_TIMESTAMP = function() {
    return this.getToken(SQLiteParser.CURRENT_TIMESTAMP, 0);
};




SQLiteParser.Literal_valueContext = Literal_valueContext;

SQLiteParser.prototype.literal_value = function() {

    var localctx = new Literal_valueContext(this, this._ctx, this.state);
    this.enterRule(localctx, 70, SQLiteParser.RULE_literal_value);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1087;
        _la = this._input.LA(1);
        if(!(((((_la - 52)) & ~0x1f) == 0 && ((1 << (_la - 52)) & ((1 << (SQLiteParser.CURRENT_DATE - 52)) | (1 << (SQLiteParser.CURRENT_TIME - 52)) | (1 << (SQLiteParser.CURRENT_TIMESTAMP - 52)))) !== 0) || _la===SQLiteParser.NULL || ((((_la - 171)) & ~0x1f) == 0 && ((1 << (_la - 171)) & ((1 << (SQLiteParser.TRUE - 171)) | (1 << (SQLiteParser.FALSE - 171)) | (1 << (SQLiteParser.NUMERIC_LITERAL - 171)) | (1 << (SQLiteParser.STRING_LITERAL - 171)) | (1 << (SQLiteParser.BLOB_LITERAL - 171)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Insert_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_insert_stmt;
    return this;
}

Insert_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Insert_stmtContext.prototype.constructor = Insert_stmtContext;

Insert_stmtContext.prototype.INTO = function() {
    return this.getToken(SQLiteParser.INTO, 0);
};

Insert_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Insert_stmtContext.prototype.INSERT = function() {
    return this.getToken(SQLiteParser.INSERT, 0);
};

Insert_stmtContext.prototype.REPLACE = function() {
    return this.getToken(SQLiteParser.REPLACE, 0);
};

Insert_stmtContext.prototype.with_clause = function() {
    return this.getTypedRuleContext(With_clauseContext,0);
};

Insert_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Insert_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Insert_stmtContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Insert_stmtContext.prototype.table_alias = function() {
    return this.getTypedRuleContext(Table_aliasContext,0);
};

Insert_stmtContext.prototype.OPEN_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.OPEN_PAR);
    } else {
        return this.getToken(SQLiteParser.OPEN_PAR, i);
    }
};


Insert_stmtContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Insert_stmtContext.prototype.CLOSE_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.CLOSE_PAR);
    } else {
        return this.getToken(SQLiteParser.CLOSE_PAR, i);
    }
};


Insert_stmtContext.prototype.OR = function() {
    return this.getToken(SQLiteParser.OR, 0);
};

Insert_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};

Insert_stmtContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

Insert_stmtContext.prototype.ABORT = function() {
    return this.getToken(SQLiteParser.ABORT, 0);
};

Insert_stmtContext.prototype.FAIL = function() {
    return this.getToken(SQLiteParser.FAIL, 0);
};

Insert_stmtContext.prototype.IGNORE = function() {
    return this.getToken(SQLiteParser.IGNORE, 0);
};

Insert_stmtContext.prototype.upsert_clause = function() {
    return this.getTypedRuleContext(Upsert_clauseContext,0);
};

Insert_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Insert_stmtContext.prototype.VALUES = function() {
    return this.getToken(SQLiteParser.VALUES, 0);
};

Insert_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Insert_stmtContext.prototype.DEFAULT = function() {
    return this.getToken(SQLiteParser.DEFAULT, 0);
};




SQLiteParser.Insert_stmtContext = Insert_stmtContext;

SQLiteParser.prototype.insert_stmt = function() {

    var localctx = new Insert_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 72, SQLiteParser.RULE_insert_stmt);
    var _la = 0; // Token type
    try {
        this.state = 1159;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.INSERT:
        case SQLiteParser.REPLACE:
        case SQLiteParser.WITH:
            this.enterOuterAlt(localctx, 1);
            this.state = 1090;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.WITH) {
                this.state = 1089;
                this.with_clause();
            }

            this.state = 1097;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,137,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1092;
                this.match(SQLiteParser.INSERT);
                break;

            case 2:
                this.state = 1093;
                this.match(SQLiteParser.REPLACE);
                break;

            case 3:
                this.state = 1094;
                this.match(SQLiteParser.INSERT);
                this.state = 1095;
                this.match(SQLiteParser.OR);
                this.state = 1096;
                _la = this._input.LA(1);
                if(!(_la===SQLiteParser.ABORT || _la===SQLiteParser.FAIL || _la===SQLiteParser.IGNORE || _la===SQLiteParser.REPLACE || _la===SQLiteParser.ROLLBACK)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }
                break;

            }
            this.state = 1099;
            this.match(SQLiteParser.INTO);
            this.state = 1103;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,138,this._ctx);
            if(la_===1) {
                this.state = 1100;
                this.schema_name();
                this.state = 1101;
                this.match(SQLiteParser.DOT);

            }
            this.state = 1105;
            this.table_name();
            this.state = 1108;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.AS) {
                this.state = 1106;
                this.match(SQLiteParser.AS);
                this.state = 1107;
                this.table_alias();
            }

            this.state = 1121;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.OPEN_PAR) {
                this.state = 1110;
                this.match(SQLiteParser.OPEN_PAR);
                this.state = 1111;
                this.column_name();
                this.state = 1116;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1112;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1113;
                    this.column_name();
                    this.state = 1118;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                this.state = 1119;
                this.match(SQLiteParser.CLOSE_PAR);
            }

            this.state = 1152;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,145,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1123;
                this.match(SQLiteParser.VALUES);
                this.state = 1124;
                this.match(SQLiteParser.OPEN_PAR);
                this.state = 1125;
                this.expr(0);
                this.state = 1130;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1126;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1127;
                    this.expr(0);
                    this.state = 1132;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                this.state = 1133;
                this.match(SQLiteParser.CLOSE_PAR);
                this.state = 1148;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1134;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1135;
                    this.match(SQLiteParser.OPEN_PAR);
                    this.state = 1136;
                    this.expr(0);
                    this.state = 1141;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                    while(_la===SQLiteParser.COMMA) {
                        this.state = 1137;
                        this.match(SQLiteParser.COMMA);
                        this.state = 1138;
                        this.expr(0);
                        this.state = 1143;
                        this._errHandler.sync(this);
                        _la = this._input.LA(1);
                    }
                    this.state = 1144;
                    this.match(SQLiteParser.CLOSE_PAR);
                    this.state = 1150;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                break;

            case 2:
                this.state = 1151;
                this.select_stmt();
                break;

            }
            this.state = 1155;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ON) {
                this.state = 1154;
                this.upsert_clause();
            }

            break;
        case SQLiteParser.DEFAULT:
            this.enterOuterAlt(localctx, 2);
            this.state = 1157;
            this.match(SQLiteParser.DEFAULT);
            this.state = 1158;
            this.match(SQLiteParser.VALUES);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Upsert_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_upsert_clause;
    return this;
}

Upsert_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Upsert_clauseContext.prototype.constructor = Upsert_clauseContext;

Upsert_clauseContext.prototype.ON = function() {
    return this.getToken(SQLiteParser.ON, 0);
};

Upsert_clauseContext.prototype.CONFLICT = function() {
    return this.getToken(SQLiteParser.CONFLICT, 0);
};

Upsert_clauseContext.prototype.DO = function() {
    return this.getToken(SQLiteParser.DO, 0);
};

Upsert_clauseContext.prototype.NOTHING = function() {
    return this.getToken(SQLiteParser.NOTHING, 0);
};

Upsert_clauseContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Upsert_clauseContext.prototype.indexed_column = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Indexed_columnContext);
    } else {
        return this.getTypedRuleContext(Indexed_columnContext,i);
    }
};

Upsert_clauseContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Upsert_clauseContext.prototype.UPDATE = function() {
    return this.getToken(SQLiteParser.UPDATE, 0);
};

Upsert_clauseContext.prototype.SET = function() {
    return this.getToken(SQLiteParser.SET, 0);
};

Upsert_clauseContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Upsert_clauseContext.prototype.WHERE = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.WHERE);
    } else {
        return this.getToken(SQLiteParser.WHERE, i);
    }
};


Upsert_clauseContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Upsert_clauseContext.prototype.EQ = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.EQ);
    } else {
        return this.getToken(SQLiteParser.EQ, i);
    }
};


Upsert_clauseContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Upsert_clauseContext.prototype.column_name_list = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_name_listContext);
    } else {
        return this.getTypedRuleContext(Column_name_listContext,i);
    }
};




SQLiteParser.Upsert_clauseContext = Upsert_clauseContext;

SQLiteParser.prototype.upsert_clause = function() {

    var localctx = new Upsert_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 74, SQLiteParser.RULE_upsert_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1161;
        this.match(SQLiteParser.ON);
        this.state = 1162;
        this.match(SQLiteParser.CONFLICT);
        this.state = 1177;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.OPEN_PAR) {
            this.state = 1163;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1164;
            this.indexed_column();
            this.state = 1169;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1165;
                this.match(SQLiteParser.COMMA);
                this.state = 1166;
                this.indexed_column();
                this.state = 1171;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1172;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1175;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.WHERE) {
                this.state = 1173;
                this.match(SQLiteParser.WHERE);
                this.state = 1174;
                this.expr(0);
            }

        }

        this.state = 1179;
        this.match(SQLiteParser.DO);
        this.state = 1206;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.NOTHING:
            this.state = 1180;
            this.match(SQLiteParser.NOTHING);
            break;
        case SQLiteParser.UPDATE:
            this.state = 1181;
            this.match(SQLiteParser.UPDATE);
            this.state = 1182;
            this.match(SQLiteParser.SET);

            this.state = 1185;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,151,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1183;
                this.column_name();
                break;

            case 2:
                this.state = 1184;
                this.column_name_list();
                break;

            }
            this.state = 1187;
            this.match(SQLiteParser.EQ);
            this.state = 1188;
            this.expr(0);
            this.state = 1199;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1189;
                this.match(SQLiteParser.COMMA);
                this.state = 1192;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,152,this._ctx);
                switch(la_) {
                case 1:
                    this.state = 1190;
                    this.column_name();
                    break;

                case 2:
                    this.state = 1191;
                    this.column_name_list();
                    break;

                }
                this.state = 1194;
                this.match(SQLiteParser.EQ);
                this.state = 1195;
                this.expr(0);
                this.state = 1201;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1204;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.WHERE) {
                this.state = 1202;
                this.match(SQLiteParser.WHERE);
                this.state = 1203;
                this.expr(0);
            }

            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Pragma_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_pragma_stmt;
    return this;
}

Pragma_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Pragma_stmtContext.prototype.constructor = Pragma_stmtContext;

Pragma_stmtContext.prototype.PRAGMA = function() {
    return this.getToken(SQLiteParser.PRAGMA, 0);
};

Pragma_stmtContext.prototype.pragma_name = function() {
    return this.getTypedRuleContext(Pragma_nameContext,0);
};

Pragma_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Pragma_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Pragma_stmtContext.prototype.ASSIGN = function() {
    return this.getToken(SQLiteParser.ASSIGN, 0);
};

Pragma_stmtContext.prototype.pragma_value = function() {
    return this.getTypedRuleContext(Pragma_valueContext,0);
};

Pragma_stmtContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Pragma_stmtContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};




SQLiteParser.Pragma_stmtContext = Pragma_stmtContext;

SQLiteParser.prototype.pragma_stmt = function() {

    var localctx = new Pragma_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 76, SQLiteParser.RULE_pragma_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1208;
        this.match(SQLiteParser.PRAGMA);
        this.state = 1212;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,156,this._ctx);
        if(la_===1) {
            this.state = 1209;
            this.schema_name();
            this.state = 1210;
            this.match(SQLiteParser.DOT);

        }
        this.state = 1214;
        this.pragma_name();
        this.state = 1221;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case SQLiteParser.ASSIGN:
        	this.state = 1215;
        	this.match(SQLiteParser.ASSIGN);
        	this.state = 1216;
        	this.pragma_value();
        	break;
        case SQLiteParser.OPEN_PAR:
        	this.state = 1217;
        	this.match(SQLiteParser.OPEN_PAR);
        	this.state = 1218;
        	this.pragma_value();
        	this.state = 1219;
        	this.match(SQLiteParser.CLOSE_PAR);
        	break;
        case SQLiteParser.EOF:
        case SQLiteParser.SCOL:
        case SQLiteParser.ALTER:
        case SQLiteParser.ANALYZE:
        case SQLiteParser.ATTACH:
        case SQLiteParser.BEGIN:
        case SQLiteParser.COMMIT:
        case SQLiteParser.CREATE:
        case SQLiteParser.DEFAULT:
        case SQLiteParser.DELETE:
        case SQLiteParser.DETACH:
        case SQLiteParser.DROP:
        case SQLiteParser.END:
        case SQLiteParser.EXPLAIN:
        case SQLiteParser.INSERT:
        case SQLiteParser.PRAGMA:
        case SQLiteParser.REINDEX:
        case SQLiteParser.RELEASE:
        case SQLiteParser.REPLACE:
        case SQLiteParser.ROLLBACK:
        case SQLiteParser.SAVEPOINT:
        case SQLiteParser.SELECT:
        case SQLiteParser.UPDATE:
        case SQLiteParser.VACUUM:
        case SQLiteParser.VALUES:
        case SQLiteParser.WITH:
        case SQLiteParser.UNEXPECTED_CHAR:
        	break;
        default:
        	break;
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Pragma_valueContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_pragma_value;
    return this;
}

Pragma_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Pragma_valueContext.prototype.constructor = Pragma_valueContext;

Pragma_valueContext.prototype.signed_number = function() {
    return this.getTypedRuleContext(Signed_numberContext,0);
};

Pragma_valueContext.prototype.name = function() {
    return this.getTypedRuleContext(NameContext,0);
};

Pragma_valueContext.prototype.STRING_LITERAL = function() {
    return this.getToken(SQLiteParser.STRING_LITERAL, 0);
};




SQLiteParser.Pragma_valueContext = Pragma_valueContext;

SQLiteParser.prototype.pragma_value = function() {

    var localctx = new Pragma_valueContext(this, this._ctx, this.state);
    this.enterRule(localctx, 78, SQLiteParser.RULE_pragma_value);
    try {
        this.state = 1226;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,158,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1223;
            this.signed_number();
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1224;
            this.name();
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1225;
            this.match(SQLiteParser.STRING_LITERAL);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Reindex_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_reindex_stmt;
    return this;
}

Reindex_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Reindex_stmtContext.prototype.constructor = Reindex_stmtContext;

Reindex_stmtContext.prototype.REINDEX = function() {
    return this.getToken(SQLiteParser.REINDEX, 0);
};

Reindex_stmtContext.prototype.collation_name = function() {
    return this.getTypedRuleContext(Collation_nameContext,0);
};

Reindex_stmtContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Reindex_stmtContext.prototype.index_name = function() {
    return this.getTypedRuleContext(Index_nameContext,0);
};

Reindex_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Reindex_stmtContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};




SQLiteParser.Reindex_stmtContext = Reindex_stmtContext;

SQLiteParser.prototype.reindex_stmt = function() {

    var localctx = new Reindex_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 80, SQLiteParser.RULE_reindex_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1228;
        this.match(SQLiteParser.REINDEX);
        this.state = 1239;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,161,this._ctx);
        if(la_===1) {
            this.state = 1229;
            this.collation_name();

        } else if(la_===2) {
            this.state = 1233;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,159,this._ctx);
            if(la_===1) {
                this.state = 1230;
                this.schema_name();
                this.state = 1231;
                this.match(SQLiteParser.DOT);

            }
            this.state = 1237;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,160,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1235;
                this.table_name();
                break;

            case 2:
                this.state = 1236;
                this.index_name();
                break;

            }

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Select_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_select_stmt;
    return this;
}

Select_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Select_stmtContext.prototype.constructor = Select_stmtContext;

Select_stmtContext.prototype.select_core = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Select_coreContext);
    } else {
        return this.getTypedRuleContext(Select_coreContext,i);
    }
};

Select_stmtContext.prototype.common_table_stmt = function() {
    return this.getTypedRuleContext(Common_table_stmtContext,0);
};

Select_stmtContext.prototype.compound_operator = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Compound_operatorContext);
    } else {
        return this.getTypedRuleContext(Compound_operatorContext,i);
    }
};

Select_stmtContext.prototype.order_by_stmt = function() {
    return this.getTypedRuleContext(Order_by_stmtContext,0);
};

Select_stmtContext.prototype.limit_stmt = function() {
    return this.getTypedRuleContext(Limit_stmtContext,0);
};




SQLiteParser.Select_stmtContext = Select_stmtContext;

SQLiteParser.prototype.select_stmt = function() {

    var localctx = new Select_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 82, SQLiteParser.RULE_select_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1242;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 1241;
            this.common_table_stmt();
        }

        this.state = 1244;
        this.select_core();
        this.state = 1250;
        this._errHandler.sync(this);
        var _alt = this._interp.adaptivePredict(this._input,163,this._ctx)
        while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {
            if(_alt===1) {
                this.state = 1245;
                this.compound_operator();
                this.state = 1246;
                this.select_core(); 
            }
            this.state = 1252;
            this._errHandler.sync(this);
            _alt = this._interp.adaptivePredict(this._input,163,this._ctx);
        }

        this.state = 1254;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ORDER) {
            this.state = 1253;
            this.order_by_stmt();
        }

        this.state = 1257;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.LIMIT) {
            this.state = 1256;
            this.limit_stmt();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Join_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_join_clause;
    return this;
}

Join_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Join_clauseContext.prototype.constructor = Join_clauseContext;

Join_clauseContext.prototype.table_or_subquery = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Table_or_subqueryContext);
    } else {
        return this.getTypedRuleContext(Table_or_subqueryContext,i);
    }
};

Join_clauseContext.prototype.join_operator = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Join_operatorContext);
    } else {
        return this.getTypedRuleContext(Join_operatorContext,i);
    }
};

Join_clauseContext.prototype.join_constraint = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Join_constraintContext);
    } else {
        return this.getTypedRuleContext(Join_constraintContext,i);
    }
};




SQLiteParser.Join_clauseContext = Join_clauseContext;

SQLiteParser.prototype.join_clause = function() {

    var localctx = new Join_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 84, SQLiteParser.RULE_join_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1259;
        this.table_or_subquery();
        this.state = 1267;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA || _la===SQLiteParser.CROSS || ((((_la - 87)) & ~0x1f) == 0 && ((1 << (_la - 87)) & ((1 << (SQLiteParser.INNER - 87)) | (1 << (SQLiteParser.JOIN - 87)) | (1 << (SQLiteParser.LEFT - 87)) | (1 << (SQLiteParser.NATURAL - 87)))) !== 0)) {
            this.state = 1260;
            this.join_operator();
            this.state = 1261;
            this.table_or_subquery();
            this.state = 1263;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,166,this._ctx);
            if(la_===1) {
                this.state = 1262;
                this.join_constraint();

            }
            this.state = 1269;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Select_coreContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_select_core;
    return this;
}

Select_coreContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Select_coreContext.prototype.constructor = Select_coreContext;

Select_coreContext.prototype.SELECT = function() {
    return this.getToken(SQLiteParser.SELECT, 0);
};

Select_coreContext.prototype.result_column = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Result_columnContext);
    } else {
        return this.getTypedRuleContext(Result_columnContext,i);
    }
};

Select_coreContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Select_coreContext.prototype.FROM = function() {
    return this.getToken(SQLiteParser.FROM, 0);
};

Select_coreContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Select_coreContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Select_coreContext.prototype.GROUP = function() {
    return this.getToken(SQLiteParser.GROUP, 0);
};

Select_coreContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Select_coreContext.prototype.WINDOW = function() {
    return this.getToken(SQLiteParser.WINDOW, 0);
};

Select_coreContext.prototype.window_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Window_nameContext);
    } else {
        return this.getTypedRuleContext(Window_nameContext,i);
    }
};

Select_coreContext.prototype.AS = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.AS);
    } else {
        return this.getToken(SQLiteParser.AS, i);
    }
};


Select_coreContext.prototype.window_defn = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Window_defnContext);
    } else {
        return this.getTypedRuleContext(Window_defnContext,i);
    }
};

Select_coreContext.prototype.DISTINCT = function() {
    return this.getToken(SQLiteParser.DISTINCT, 0);
};

Select_coreContext.prototype.ALL = function() {
    return this.getToken(SQLiteParser.ALL, 0);
};

Select_coreContext.prototype.table_or_subquery = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Table_or_subqueryContext);
    } else {
        return this.getTypedRuleContext(Table_or_subqueryContext,i);
    }
};

Select_coreContext.prototype.join_clause = function() {
    return this.getTypedRuleContext(Join_clauseContext,0);
};

Select_coreContext.prototype.HAVING = function() {
    return this.getToken(SQLiteParser.HAVING, 0);
};

Select_coreContext.prototype.VALUES = function() {
    return this.getToken(SQLiteParser.VALUES, 0);
};

Select_coreContext.prototype.OPEN_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.OPEN_PAR);
    } else {
        return this.getToken(SQLiteParser.OPEN_PAR, i);
    }
};


Select_coreContext.prototype.CLOSE_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.CLOSE_PAR);
    } else {
        return this.getToken(SQLiteParser.CLOSE_PAR, i);
    }
};





SQLiteParser.Select_coreContext = Select_coreContext;

SQLiteParser.prototype.select_core = function() {

    var localctx = new Select_coreContext(this, this._ctx, this.state);
    this.enterRule(localctx, 86, SQLiteParser.RULE_select_core);
    var _la = 0; // Token type
    try {
        this.state = 1360;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.SELECT:
            this.enterOuterAlt(localctx, 1);
            this.state = 1270;
            this.match(SQLiteParser.SELECT);
            this.state = 1272;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,168,this._ctx);
            if(la_===1) {
                this.state = 1271;
                _la = this._input.LA(1);
                if(!(_la===SQLiteParser.ALL || _la===SQLiteParser.DISTINCT)) {
                this._errHandler.recoverInline(this);
                }
                else {
                	this._errHandler.reportMatch(this);
                    this.consume();
                }

            }
            this.state = 1274;
            this.result_column();
            this.state = 1279;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1275;
                this.match(SQLiteParser.COMMA);
                this.state = 1276;
                this.result_column();
                this.state = 1281;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1294;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.FROM) {
                this.state = 1282;
                this.match(SQLiteParser.FROM);
                this.state = 1292;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,171,this._ctx);
                switch(la_) {
                case 1:
                    this.state = 1283;
                    this.table_or_subquery();
                    this.state = 1288;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                    while(_la===SQLiteParser.COMMA) {
                        this.state = 1284;
                        this.match(SQLiteParser.COMMA);
                        this.state = 1285;
                        this.table_or_subquery();
                        this.state = 1290;
                        this._errHandler.sync(this);
                        _la = this._input.LA(1);
                    }
                    break;

                case 2:
                    this.state = 1291;
                    this.join_clause();
                    break;

                }
            }

            this.state = 1298;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.WHERE) {
                this.state = 1296;
                this.match(SQLiteParser.WHERE);
                this.state = 1297;
                this.expr(0);
            }

            this.state = 1314;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.GROUP) {
                this.state = 1300;
                this.match(SQLiteParser.GROUP);
                this.state = 1301;
                this.match(SQLiteParser.BY);
                this.state = 1302;
                this.expr(0);
                this.state = 1307;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1303;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1304;
                    this.expr(0);
                    this.state = 1309;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                this.state = 1312;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===SQLiteParser.HAVING) {
                    this.state = 1310;
                    this.match(SQLiteParser.HAVING);
                    this.state = 1311;
                    this.expr(0);
                }

            }

            this.state = 1330;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.WINDOW) {
                this.state = 1316;
                this.match(SQLiteParser.WINDOW);
                this.state = 1317;
                this.window_name();
                this.state = 1318;
                this.match(SQLiteParser.AS);
                this.state = 1319;
                this.window_defn();
                this.state = 1327;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1320;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1321;
                    this.window_name();
                    this.state = 1322;
                    this.match(SQLiteParser.AS);
                    this.state = 1323;
                    this.window_defn();
                    this.state = 1329;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            break;
        case SQLiteParser.VALUES:
            this.enterOuterAlt(localctx, 2);
            this.state = 1332;
            this.match(SQLiteParser.VALUES);
            this.state = 1333;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1334;
            this.expr(0);
            this.state = 1339;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1335;
                this.match(SQLiteParser.COMMA);
                this.state = 1336;
                this.expr(0);
                this.state = 1341;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1342;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1357;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1343;
                this.match(SQLiteParser.COMMA);
                this.state = 1344;
                this.match(SQLiteParser.OPEN_PAR);
                this.state = 1345;
                this.expr(0);
                this.state = 1350;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1346;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1347;
                    this.expr(0);
                    this.state = 1352;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                this.state = 1353;
                this.match(SQLiteParser.CLOSE_PAR);
                this.state = 1359;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Factored_select_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_factored_select_stmt;
    return this;
}

Factored_select_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Factored_select_stmtContext.prototype.constructor = Factored_select_stmtContext;

Factored_select_stmtContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};




SQLiteParser.Factored_select_stmtContext = Factored_select_stmtContext;

SQLiteParser.prototype.factored_select_stmt = function() {

    var localctx = new Factored_select_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 88, SQLiteParser.RULE_factored_select_stmt);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1362;
        this.select_stmt();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Simple_select_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_simple_select_stmt;
    return this;
}

Simple_select_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Simple_select_stmtContext.prototype.constructor = Simple_select_stmtContext;

Simple_select_stmtContext.prototype.select_core = function() {
    return this.getTypedRuleContext(Select_coreContext,0);
};

Simple_select_stmtContext.prototype.common_table_stmt = function() {
    return this.getTypedRuleContext(Common_table_stmtContext,0);
};

Simple_select_stmtContext.prototype.order_by_stmt = function() {
    return this.getTypedRuleContext(Order_by_stmtContext,0);
};

Simple_select_stmtContext.prototype.limit_stmt = function() {
    return this.getTypedRuleContext(Limit_stmtContext,0);
};




SQLiteParser.Simple_select_stmtContext = Simple_select_stmtContext;

SQLiteParser.prototype.simple_select_stmt = function() {

    var localctx = new Simple_select_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 90, SQLiteParser.RULE_simple_select_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1365;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 1364;
            this.common_table_stmt();
        }

        this.state = 1367;
        this.select_core();
        this.state = 1369;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ORDER) {
            this.state = 1368;
            this.order_by_stmt();
        }

        this.state = 1372;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.LIMIT) {
            this.state = 1371;
            this.limit_stmt();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Compound_select_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_compound_select_stmt;
    return this;
}

Compound_select_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Compound_select_stmtContext.prototype.constructor = Compound_select_stmtContext;

Compound_select_stmtContext.prototype.select_core = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Select_coreContext);
    } else {
        return this.getTypedRuleContext(Select_coreContext,i);
    }
};

Compound_select_stmtContext.prototype.common_table_stmt = function() {
    return this.getTypedRuleContext(Common_table_stmtContext,0);
};

Compound_select_stmtContext.prototype.order_by_stmt = function() {
    return this.getTypedRuleContext(Order_by_stmtContext,0);
};

Compound_select_stmtContext.prototype.limit_stmt = function() {
    return this.getTypedRuleContext(Limit_stmtContext,0);
};

Compound_select_stmtContext.prototype.INTERSECT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.INTERSECT);
    } else {
        return this.getToken(SQLiteParser.INTERSECT, i);
    }
};


Compound_select_stmtContext.prototype.EXCEPT = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.EXCEPT);
    } else {
        return this.getToken(SQLiteParser.EXCEPT, i);
    }
};


Compound_select_stmtContext.prototype.UNION = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.UNION);
    } else {
        return this.getToken(SQLiteParser.UNION, i);
    }
};


Compound_select_stmtContext.prototype.ALL = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.ALL);
    } else {
        return this.getToken(SQLiteParser.ALL, i);
    }
};





SQLiteParser.Compound_select_stmtContext = Compound_select_stmtContext;

SQLiteParser.prototype.compound_select_stmt = function() {

    var localctx = new Compound_select_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 92, SQLiteParser.RULE_compound_select_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1375;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 1374;
            this.common_table_stmt();
        }

        this.state = 1377;
        this.select_core();
        this.state = 1387; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1384;
            this._errHandler.sync(this);
            switch(this._input.LA(1)) {
            case SQLiteParser.UNION:
                this.state = 1378;
                this.match(SQLiteParser.UNION);
                this.state = 1380;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===SQLiteParser.ALL) {
                    this.state = 1379;
                    this.match(SQLiteParser.ALL);
                }

                break;
            case SQLiteParser.INTERSECT:
                this.state = 1382;
                this.match(SQLiteParser.INTERSECT);
                break;
            case SQLiteParser.EXCEPT:
                this.state = 1383;
                this.match(SQLiteParser.EXCEPT);
                break;
            default:
                throw new antlr4.error.NoViableAltException(this);
            }
            this.state = 1386;
            this.select_core();
            this.state = 1389; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while(_la===SQLiteParser.EXCEPT || _la===SQLiteParser.INTERSECT || _la===SQLiteParser.UNION);
        this.state = 1392;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ORDER) {
            this.state = 1391;
            this.order_by_stmt();
        }

        this.state = 1395;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.LIMIT) {
            this.state = 1394;
            this.limit_stmt();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Table_or_subqueryContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_table_or_subquery;
    return this;
}

Table_or_subqueryContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_or_subqueryContext.prototype.constructor = Table_or_subqueryContext;

Table_or_subqueryContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Table_or_subqueryContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Table_or_subqueryContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Table_or_subqueryContext.prototype.table_alias = function() {
    return this.getTypedRuleContext(Table_aliasContext,0);
};

Table_or_subqueryContext.prototype.INDEXED = function() {
    return this.getToken(SQLiteParser.INDEXED, 0);
};

Table_or_subqueryContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Table_or_subqueryContext.prototype.index_name = function() {
    return this.getTypedRuleContext(Index_nameContext,0);
};

Table_or_subqueryContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

Table_or_subqueryContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Table_or_subqueryContext.prototype.table_function_name = function() {
    return this.getTypedRuleContext(Table_function_nameContext,0);
};

Table_or_subqueryContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Table_or_subqueryContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Table_or_subqueryContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Table_or_subqueryContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Table_or_subqueryContext.prototype.table_or_subquery = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Table_or_subqueryContext);
    } else {
        return this.getTypedRuleContext(Table_or_subqueryContext,i);
    }
};

Table_or_subqueryContext.prototype.join_clause = function() {
    return this.getTypedRuleContext(Join_clauseContext,0);
};

Table_or_subqueryContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};




SQLiteParser.Table_or_subqueryContext = Table_or_subqueryContext;

SQLiteParser.prototype.table_or_subquery = function() {

    var localctx = new Table_or_subqueryContext(this, this._ctx, this.state);
    this.enterRule(localctx, 94, SQLiteParser.RULE_table_or_subquery);
    var _la = 0; // Token type
    try {
        this.state = 1461;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,204,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1400;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,192,this._ctx);
            if(la_===1) {
                this.state = 1397;
                this.schema_name();
                this.state = 1398;
                this.match(SQLiteParser.DOT);

            }
            this.state = 1402;
            this.table_name();
            this.state = 1407;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,194,this._ctx);
            if(la_===1) {
                this.state = 1404;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,193,this._ctx);
                if(la_===1) {
                    this.state = 1403;
                    this.match(SQLiteParser.AS);

                }
                this.state = 1406;
                this.table_alias();

            }
            this.state = 1414;
            this._errHandler.sync(this);
            switch (this._input.LA(1)) {
            case SQLiteParser.INDEXED:
            	this.state = 1409;
            	this.match(SQLiteParser.INDEXED);
            	this.state = 1410;
            	this.match(SQLiteParser.BY);
            	this.state = 1411;
            	this.index_name();
            	break;
            case SQLiteParser.NOT:
            	this.state = 1412;
            	this.match(SQLiteParser.NOT);
            	this.state = 1413;
            	this.match(SQLiteParser.INDEXED);
            	break;
            case SQLiteParser.EOF:
            case SQLiteParser.SCOL:
            case SQLiteParser.CLOSE_PAR:
            case SQLiteParser.COMMA:
            case SQLiteParser.ALTER:
            case SQLiteParser.ANALYZE:
            case SQLiteParser.ATTACH:
            case SQLiteParser.BEGIN:
            case SQLiteParser.COMMIT:
            case SQLiteParser.CREATE:
            case SQLiteParser.CROSS:
            case SQLiteParser.DEFAULT:
            case SQLiteParser.DELETE:
            case SQLiteParser.DETACH:
            case SQLiteParser.DROP:
            case SQLiteParser.END:
            case SQLiteParser.EXCEPT:
            case SQLiteParser.EXPLAIN:
            case SQLiteParser.GROUP:
            case SQLiteParser.INNER:
            case SQLiteParser.INSERT:
            case SQLiteParser.INTERSECT:
            case SQLiteParser.JOIN:
            case SQLiteParser.LEFT:
            case SQLiteParser.LIMIT:
            case SQLiteParser.NATURAL:
            case SQLiteParser.ON:
            case SQLiteParser.ORDER:
            case SQLiteParser.PRAGMA:
            case SQLiteParser.REINDEX:
            case SQLiteParser.RELEASE:
            case SQLiteParser.REPLACE:
            case SQLiteParser.ROLLBACK:
            case SQLiteParser.SAVEPOINT:
            case SQLiteParser.SELECT:
            case SQLiteParser.UNION:
            case SQLiteParser.UPDATE:
            case SQLiteParser.USING:
            case SQLiteParser.VACUUM:
            case SQLiteParser.VALUES:
            case SQLiteParser.WHERE:
            case SQLiteParser.WITH:
            case SQLiteParser.WINDOW:
            case SQLiteParser.UNEXPECTED_CHAR:
            	break;
            default:
            	break;
            }
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1419;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,196,this._ctx);
            if(la_===1) {
                this.state = 1416;
                this.schema_name();
                this.state = 1417;
                this.match(SQLiteParser.DOT);

            }
            this.state = 1421;
            this.table_function_name();
            this.state = 1422;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1423;
            this.expr(0);
            this.state = 1428;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1424;
                this.match(SQLiteParser.COMMA);
                this.state = 1425;
                this.expr(0);
                this.state = 1430;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1431;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1436;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,199,this._ctx);
            if(la_===1) {
                this.state = 1433;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,198,this._ctx);
                if(la_===1) {
                    this.state = 1432;
                    this.match(SQLiteParser.AS);

                }
                this.state = 1435;
                this.table_alias();

            }
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1438;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1448;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,201,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1439;
                this.table_or_subquery();
                this.state = 1444;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1440;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1441;
                    this.table_or_subquery();
                    this.state = 1446;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
                break;

            case 2:
                this.state = 1447;
                this.join_clause();
                break;

            }
            this.state = 1450;
            this.match(SQLiteParser.CLOSE_PAR);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1452;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1453;
            this.select_stmt();
            this.state = 1454;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1459;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,203,this._ctx);
            if(la_===1) {
                this.state = 1456;
                this._errHandler.sync(this);
                var la_ = this._interp.adaptivePredict(this._input,202,this._ctx);
                if(la_===1) {
                    this.state = 1455;
                    this.match(SQLiteParser.AS);

                }
                this.state = 1458;
                this.table_alias();

            }
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Result_columnContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_result_column;
    return this;
}

Result_columnContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Result_columnContext.prototype.constructor = Result_columnContext;

Result_columnContext.prototype.STAR = function() {
    return this.getToken(SQLiteParser.STAR, 0);
};

Result_columnContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Result_columnContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Result_columnContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Result_columnContext.prototype.column_alias = function() {
    return this.getTypedRuleContext(Column_aliasContext,0);
};

Result_columnContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};




SQLiteParser.Result_columnContext = Result_columnContext;

SQLiteParser.prototype.result_column = function() {

    var localctx = new Result_columnContext(this, this._ctx, this.state);
    this.enterRule(localctx, 96, SQLiteParser.RULE_result_column);
    var _la = 0; // Token type
    try {
        this.state = 1475;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,207,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1463;
            this.match(SQLiteParser.STAR);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1464;
            this.table_name();
            this.state = 1465;
            this.match(SQLiteParser.DOT);
            this.state = 1466;
            this.match(SQLiteParser.STAR);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1468;
            this.expr(0);
            this.state = 1473;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.AS || _la===SQLiteParser.IDENTIFIER || _la===SQLiteParser.STRING_LITERAL) {
                this.state = 1470;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                if(_la===SQLiteParser.AS) {
                    this.state = 1469;
                    this.match(SQLiteParser.AS);
                }

                this.state = 1472;
                this.column_alias();
            }

            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Join_operatorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_join_operator;
    return this;
}

Join_operatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Join_operatorContext.prototype.constructor = Join_operatorContext;

Join_operatorContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};

Join_operatorContext.prototype.JOIN = function() {
    return this.getToken(SQLiteParser.JOIN, 0);
};

Join_operatorContext.prototype.NATURAL = function() {
    return this.getToken(SQLiteParser.NATURAL, 0);
};

Join_operatorContext.prototype.INNER = function() {
    return this.getToken(SQLiteParser.INNER, 0);
};

Join_operatorContext.prototype.CROSS = function() {
    return this.getToken(SQLiteParser.CROSS, 0);
};

Join_operatorContext.prototype.LEFT = function() {
    return this.getToken(SQLiteParser.LEFT, 0);
};

Join_operatorContext.prototype.OUTER = function() {
    return this.getToken(SQLiteParser.OUTER, 0);
};




SQLiteParser.Join_operatorContext = Join_operatorContext;

SQLiteParser.prototype.join_operator = function() {

    var localctx = new Join_operatorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 98, SQLiteParser.RULE_join_operator);
    var _la = 0; // Token type
    try {
        this.state = 1490;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.COMMA:
            this.enterOuterAlt(localctx, 1);
            this.state = 1477;
            this.match(SQLiteParser.COMMA);
            break;
        case SQLiteParser.CROSS:
        case SQLiteParser.INNER:
        case SQLiteParser.JOIN:
        case SQLiteParser.LEFT:
        case SQLiteParser.NATURAL:
            this.enterOuterAlt(localctx, 2);
            this.state = 1479;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.NATURAL) {
                this.state = 1478;
                this.match(SQLiteParser.NATURAL);
            }

            this.state = 1487;
            this._errHandler.sync(this);
            switch (this._input.LA(1)) {
            case SQLiteParser.LEFT:
            	this.state = 1481;
            	this.match(SQLiteParser.LEFT);
            	this.state = 1483;
            	this._errHandler.sync(this);
            	_la = this._input.LA(1);
            	if(_la===SQLiteParser.OUTER) {
            	    this.state = 1482;
            	    this.match(SQLiteParser.OUTER);
            	}

            	break;
            case SQLiteParser.INNER:
            	this.state = 1485;
            	this.match(SQLiteParser.INNER);
            	break;
            case SQLiteParser.CROSS:
            	this.state = 1486;
            	this.match(SQLiteParser.CROSS);
            	break;
            case SQLiteParser.JOIN:
            	break;
            default:
            	break;
            }
            this.state = 1489;
            this.match(SQLiteParser.JOIN);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Join_constraintContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_join_constraint;
    return this;
}

Join_constraintContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Join_constraintContext.prototype.constructor = Join_constraintContext;

Join_constraintContext.prototype.ON = function() {
    return this.getToken(SQLiteParser.ON, 0);
};

Join_constraintContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Join_constraintContext.prototype.USING = function() {
    return this.getToken(SQLiteParser.USING, 0);
};

Join_constraintContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Join_constraintContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Join_constraintContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Join_constraintContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Join_constraintContext = Join_constraintContext;

SQLiteParser.prototype.join_constraint = function() {

    var localctx = new Join_constraintContext(this, this._ctx, this.state);
    this.enterRule(localctx, 100, SQLiteParser.RULE_join_constraint);
    var _la = 0; // Token type
    try {
        this.state = 1506;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.ON:
            this.enterOuterAlt(localctx, 1);
            this.state = 1492;
            this.match(SQLiteParser.ON);
            this.state = 1493;
            this.expr(0);
            break;
        case SQLiteParser.USING:
            this.enterOuterAlt(localctx, 2);
            this.state = 1494;
            this.match(SQLiteParser.USING);
            this.state = 1495;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1496;
            this.column_name();
            this.state = 1501;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1497;
                this.match(SQLiteParser.COMMA);
                this.state = 1498;
                this.column_name();
                this.state = 1503;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            this.state = 1504;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Compound_operatorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_compound_operator;
    return this;
}

Compound_operatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Compound_operatorContext.prototype.constructor = Compound_operatorContext;

Compound_operatorContext.prototype.UNION = function() {
    return this.getToken(SQLiteParser.UNION, 0);
};

Compound_operatorContext.prototype.ALL = function() {
    return this.getToken(SQLiteParser.ALL, 0);
};

Compound_operatorContext.prototype.INTERSECT = function() {
    return this.getToken(SQLiteParser.INTERSECT, 0);
};

Compound_operatorContext.prototype.EXCEPT = function() {
    return this.getToken(SQLiteParser.EXCEPT, 0);
};




SQLiteParser.Compound_operatorContext = Compound_operatorContext;

SQLiteParser.prototype.compound_operator = function() {

    var localctx = new Compound_operatorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 102, SQLiteParser.RULE_compound_operator);
    var _la = 0; // Token type
    try {
        this.state = 1514;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.UNION:
            this.enterOuterAlt(localctx, 1);
            this.state = 1508;
            this.match(SQLiteParser.UNION);
            this.state = 1510;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ALL) {
                this.state = 1509;
                this.match(SQLiteParser.ALL);
            }

            break;
        case SQLiteParser.INTERSECT:
            this.enterOuterAlt(localctx, 2);
            this.state = 1512;
            this.match(SQLiteParser.INTERSECT);
            break;
        case SQLiteParser.EXCEPT:
            this.enterOuterAlt(localctx, 3);
            this.state = 1513;
            this.match(SQLiteParser.EXCEPT);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Update_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_update_stmt;
    return this;
}

Update_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Update_stmtContext.prototype.constructor = Update_stmtContext;

Update_stmtContext.prototype.UPDATE = function() {
    return this.getToken(SQLiteParser.UPDATE, 0);
};

Update_stmtContext.prototype.qualified_table_name = function() {
    return this.getTypedRuleContext(Qualified_table_nameContext,0);
};

Update_stmtContext.prototype.SET = function() {
    return this.getToken(SQLiteParser.SET, 0);
};

Update_stmtContext.prototype.ASSIGN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.ASSIGN);
    } else {
        return this.getToken(SQLiteParser.ASSIGN, i);
    }
};


Update_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Update_stmtContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Update_stmtContext.prototype.column_name_list = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_name_listContext);
    } else {
        return this.getTypedRuleContext(Column_name_listContext,i);
    }
};

Update_stmtContext.prototype.with_clause = function() {
    return this.getTypedRuleContext(With_clauseContext,0);
};

Update_stmtContext.prototype.OR = function() {
    return this.getToken(SQLiteParser.OR, 0);
};

Update_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Update_stmtContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Update_stmtContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

Update_stmtContext.prototype.ABORT = function() {
    return this.getToken(SQLiteParser.ABORT, 0);
};

Update_stmtContext.prototype.REPLACE = function() {
    return this.getToken(SQLiteParser.REPLACE, 0);
};

Update_stmtContext.prototype.FAIL = function() {
    return this.getToken(SQLiteParser.FAIL, 0);
};

Update_stmtContext.prototype.IGNORE = function() {
    return this.getToken(SQLiteParser.IGNORE, 0);
};




SQLiteParser.Update_stmtContext = Update_stmtContext;

SQLiteParser.prototype.update_stmt = function() {

    var localctx = new Update_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 104, SQLiteParser.RULE_update_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1517;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 1516;
            this.with_clause();
        }

        this.state = 1519;
        this.match(SQLiteParser.UPDATE);
        this.state = 1522;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,217,this._ctx);
        if(la_===1) {
            this.state = 1520;
            this.match(SQLiteParser.OR);
            this.state = 1521;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.ABORT || _la===SQLiteParser.FAIL || _la===SQLiteParser.IGNORE || _la===SQLiteParser.REPLACE || _la===SQLiteParser.ROLLBACK)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }

        }
        this.state = 1524;
        this.qualified_table_name();
        this.state = 1525;
        this.match(SQLiteParser.SET);
        this.state = 1528;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,218,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1526;
            this.column_name();
            break;

        case 2:
            this.state = 1527;
            this.column_name_list();
            break;

        }
        this.state = 1530;
        this.match(SQLiteParser.ASSIGN);
        this.state = 1531;
        this.expr(0);
        this.state = 1542;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1532;
            this.match(SQLiteParser.COMMA);
            this.state = 1535;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,219,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1533;
                this.column_name();
                break;

            case 2:
                this.state = 1534;
                this.column_name_list();
                break;

            }
            this.state = 1537;
            this.match(SQLiteParser.ASSIGN);
            this.state = 1538;
            this.expr(0);
            this.state = 1544;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1547;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WHERE) {
            this.state = 1545;
            this.match(SQLiteParser.WHERE);
            this.state = 1546;
            this.expr(0);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Column_name_listContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_column_name_list;
    return this;
}

Column_name_listContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Column_name_listContext.prototype.constructor = Column_name_listContext;

Column_name_listContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Column_name_listContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Column_name_listContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Column_name_listContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Column_name_listContext = Column_name_listContext;

SQLiteParser.prototype.column_name_list = function() {

    var localctx = new Column_name_listContext(this, this._ctx, this.state);
    this.enterRule(localctx, 106, SQLiteParser.RULE_column_name_list);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1549;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1550;
        this.column_name();
        this.state = 1555;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1551;
            this.match(SQLiteParser.COMMA);
            this.state = 1552;
            this.column_name();
            this.state = 1557;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1558;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Update_stmt_limitedContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_update_stmt_limited;
    return this;
}

Update_stmt_limitedContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Update_stmt_limitedContext.prototype.constructor = Update_stmt_limitedContext;

Update_stmt_limitedContext.prototype.UPDATE = function() {
    return this.getToken(SQLiteParser.UPDATE, 0);
};

Update_stmt_limitedContext.prototype.qualified_table_name = function() {
    return this.getTypedRuleContext(Qualified_table_nameContext,0);
};

Update_stmt_limitedContext.prototype.SET = function() {
    return this.getToken(SQLiteParser.SET, 0);
};

Update_stmt_limitedContext.prototype.ASSIGN = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.ASSIGN);
    } else {
        return this.getToken(SQLiteParser.ASSIGN, i);
    }
};


Update_stmt_limitedContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Update_stmt_limitedContext.prototype.column_name = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_nameContext);
    } else {
        return this.getTypedRuleContext(Column_nameContext,i);
    }
};

Update_stmt_limitedContext.prototype.column_name_list = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Column_name_listContext);
    } else {
        return this.getTypedRuleContext(Column_name_listContext,i);
    }
};

Update_stmt_limitedContext.prototype.with_clause = function() {
    return this.getTypedRuleContext(With_clauseContext,0);
};

Update_stmt_limitedContext.prototype.OR = function() {
    return this.getToken(SQLiteParser.OR, 0);
};

Update_stmt_limitedContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};


Update_stmt_limitedContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Update_stmt_limitedContext.prototype.limit_stmt = function() {
    return this.getTypedRuleContext(Limit_stmtContext,0);
};

Update_stmt_limitedContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

Update_stmt_limitedContext.prototype.ABORT = function() {
    return this.getToken(SQLiteParser.ABORT, 0);
};

Update_stmt_limitedContext.prototype.REPLACE = function() {
    return this.getToken(SQLiteParser.REPLACE, 0);
};

Update_stmt_limitedContext.prototype.FAIL = function() {
    return this.getToken(SQLiteParser.FAIL, 0);
};

Update_stmt_limitedContext.prototype.IGNORE = function() {
    return this.getToken(SQLiteParser.IGNORE, 0);
};

Update_stmt_limitedContext.prototype.order_by_stmt = function() {
    return this.getTypedRuleContext(Order_by_stmtContext,0);
};




SQLiteParser.Update_stmt_limitedContext = Update_stmt_limitedContext;

SQLiteParser.prototype.update_stmt_limited = function() {

    var localctx = new Update_stmt_limitedContext(this, this._ctx, this.state);
    this.enterRule(localctx, 108, SQLiteParser.RULE_update_stmt_limited);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1561;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WITH) {
            this.state = 1560;
            this.with_clause();
        }

        this.state = 1563;
        this.match(SQLiteParser.UPDATE);
        this.state = 1566;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,224,this._ctx);
        if(la_===1) {
            this.state = 1564;
            this.match(SQLiteParser.OR);
            this.state = 1565;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.ABORT || _la===SQLiteParser.FAIL || _la===SQLiteParser.IGNORE || _la===SQLiteParser.REPLACE || _la===SQLiteParser.ROLLBACK)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }

        }
        this.state = 1568;
        this.qualified_table_name();
        this.state = 1569;
        this.match(SQLiteParser.SET);
        this.state = 1572;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,225,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1570;
            this.column_name();
            break;

        case 2:
            this.state = 1571;
            this.column_name_list();
            break;

        }
        this.state = 1574;
        this.match(SQLiteParser.ASSIGN);
        this.state = 1575;
        this.expr(0);
        this.state = 1586;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1576;
            this.match(SQLiteParser.COMMA);
            this.state = 1579;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,226,this._ctx);
            switch(la_) {
            case 1:
                this.state = 1577;
                this.column_name();
                break;

            case 2:
                this.state = 1578;
                this.column_name_list();
                break;

            }
            this.state = 1581;
            this.match(SQLiteParser.ASSIGN);
            this.state = 1582;
            this.expr(0);
            this.state = 1588;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1591;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.WHERE) {
            this.state = 1589;
            this.match(SQLiteParser.WHERE);
            this.state = 1590;
            this.expr(0);
        }

        this.state = 1597;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.LIMIT || _la===SQLiteParser.ORDER) {
            this.state = 1594;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ORDER) {
                this.state = 1593;
                this.order_by_stmt();
            }

            this.state = 1596;
            this.limit_stmt();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Qualified_table_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_qualified_table_name;
    return this;
}

Qualified_table_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Qualified_table_nameContext.prototype.constructor = Qualified_table_nameContext;

Qualified_table_nameContext.prototype.table_name = function() {
    return this.getTypedRuleContext(Table_nameContext,0);
};

Qualified_table_nameContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Qualified_table_nameContext.prototype.DOT = function() {
    return this.getToken(SQLiteParser.DOT, 0);
};

Qualified_table_nameContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

Qualified_table_nameContext.prototype.alias = function() {
    return this.getTypedRuleContext(AliasContext,0);
};

Qualified_table_nameContext.prototype.INDEXED = function() {
    return this.getToken(SQLiteParser.INDEXED, 0);
};

Qualified_table_nameContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Qualified_table_nameContext.prototype.index_name = function() {
    return this.getTypedRuleContext(Index_nameContext,0);
};

Qualified_table_nameContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};




SQLiteParser.Qualified_table_nameContext = Qualified_table_nameContext;

SQLiteParser.prototype.qualified_table_name = function() {

    var localctx = new Qualified_table_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 110, SQLiteParser.RULE_qualified_table_name);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1602;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,231,this._ctx);
        if(la_===1) {
            this.state = 1599;
            this.schema_name();
            this.state = 1600;
            this.match(SQLiteParser.DOT);

        }
        this.state = 1604;
        this.table_name();
        this.state = 1607;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.AS) {
            this.state = 1605;
            this.match(SQLiteParser.AS);
            this.state = 1606;
            this.alias();
        }

        this.state = 1614;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case SQLiteParser.INDEXED:
        	this.state = 1609;
        	this.match(SQLiteParser.INDEXED);
        	this.state = 1610;
        	this.match(SQLiteParser.BY);
        	this.state = 1611;
        	this.index_name();
        	break;
        case SQLiteParser.NOT:
        	this.state = 1612;
        	this.match(SQLiteParser.NOT);
        	this.state = 1613;
        	this.match(SQLiteParser.INDEXED);
        	break;
        case SQLiteParser.EOF:
        case SQLiteParser.SCOL:
        case SQLiteParser.ALTER:
        case SQLiteParser.ANALYZE:
        case SQLiteParser.ATTACH:
        case SQLiteParser.BEGIN:
        case SQLiteParser.COMMIT:
        case SQLiteParser.CREATE:
        case SQLiteParser.DEFAULT:
        case SQLiteParser.DELETE:
        case SQLiteParser.DETACH:
        case SQLiteParser.DROP:
        case SQLiteParser.END:
        case SQLiteParser.EXPLAIN:
        case SQLiteParser.INSERT:
        case SQLiteParser.LIMIT:
        case SQLiteParser.ORDER:
        case SQLiteParser.PRAGMA:
        case SQLiteParser.REINDEX:
        case SQLiteParser.RELEASE:
        case SQLiteParser.REPLACE:
        case SQLiteParser.ROLLBACK:
        case SQLiteParser.SAVEPOINT:
        case SQLiteParser.SELECT:
        case SQLiteParser.SET:
        case SQLiteParser.UPDATE:
        case SQLiteParser.VACUUM:
        case SQLiteParser.VALUES:
        case SQLiteParser.WHERE:
        case SQLiteParser.WITH:
        case SQLiteParser.UNEXPECTED_CHAR:
        	break;
        default:
        	break;
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Vacuum_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_vacuum_stmt;
    return this;
}

Vacuum_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Vacuum_stmtContext.prototype.constructor = Vacuum_stmtContext;

Vacuum_stmtContext.prototype.VACUUM = function() {
    return this.getToken(SQLiteParser.VACUUM, 0);
};

Vacuum_stmtContext.prototype.schema_name = function() {
    return this.getTypedRuleContext(Schema_nameContext,0);
};

Vacuum_stmtContext.prototype.INTO = function() {
    return this.getToken(SQLiteParser.INTO, 0);
};

Vacuum_stmtContext.prototype.filename = function() {
    return this.getTypedRuleContext(FilenameContext,0);
};




SQLiteParser.Vacuum_stmtContext = Vacuum_stmtContext;

SQLiteParser.prototype.vacuum_stmt = function() {

    var localctx = new Vacuum_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 112, SQLiteParser.RULE_vacuum_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1616;
        this.match(SQLiteParser.VACUUM);
        this.state = 1618;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,234,this._ctx);
        if(la_===1) {
            this.state = 1617;
            this.schema_name();

        }
        this.state = 1622;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.INTO) {
            this.state = 1620;
            this.match(SQLiteParser.INTO);
            this.state = 1621;
            this.filename();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Filter_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_filter_clause;
    return this;
}

Filter_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Filter_clauseContext.prototype.constructor = Filter_clauseContext;

Filter_clauseContext.prototype.FILTER = function() {
    return this.getToken(SQLiteParser.FILTER, 0);
};

Filter_clauseContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Filter_clauseContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

Filter_clauseContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Filter_clauseContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};




SQLiteParser.Filter_clauseContext = Filter_clauseContext;

SQLiteParser.prototype.filter_clause = function() {

    var localctx = new Filter_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 114, SQLiteParser.RULE_filter_clause);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1624;
        this.match(SQLiteParser.FILTER);
        this.state = 1625;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1626;
        this.match(SQLiteParser.WHERE);
        this.state = 1627;
        this.expr(0);
        this.state = 1628;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Window_defnContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_window_defn;
    return this;
}

Window_defnContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Window_defnContext.prototype.constructor = Window_defnContext;

Window_defnContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Window_defnContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Window_defnContext.prototype.ORDER = function() {
    return this.getToken(SQLiteParser.ORDER, 0);
};

Window_defnContext.prototype.BY = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.BY);
    } else {
        return this.getToken(SQLiteParser.BY, i);
    }
};


Window_defnContext.prototype.ordering_term = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Ordering_termContext);
    } else {
        return this.getTypedRuleContext(Ordering_termContext,i);
    }
};

Window_defnContext.prototype.base_window_name = function() {
    return this.getTypedRuleContext(Base_window_nameContext,0);
};

Window_defnContext.prototype.PARTITION = function() {
    return this.getToken(SQLiteParser.PARTITION, 0);
};

Window_defnContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Window_defnContext.prototype.frame_spec = function() {
    return this.getTypedRuleContext(Frame_specContext,0);
};

Window_defnContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Window_defnContext = Window_defnContext;

SQLiteParser.prototype.window_defn = function() {

    var localctx = new Window_defnContext(this, this._ctx, this.state);
    this.enterRule(localctx, 116, SQLiteParser.RULE_window_defn);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1630;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1632;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,236,this._ctx);
        if(la_===1) {
            this.state = 1631;
            this.base_window_name();

        }
        this.state = 1644;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.PARTITION) {
            this.state = 1634;
            this.match(SQLiteParser.PARTITION);
            this.state = 1635;
            this.match(SQLiteParser.BY);
            this.state = 1636;
            this.expr(0);
            this.state = 1641;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1637;
                this.match(SQLiteParser.COMMA);
                this.state = 1638;
                this.expr(0);
                this.state = 1643;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
        }

        this.state = 1646;
        this.match(SQLiteParser.ORDER);
        this.state = 1647;
        this.match(SQLiteParser.BY);
        this.state = 1648;
        this.ordering_term();
        this.state = 1653;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1649;
            this.match(SQLiteParser.COMMA);
            this.state = 1650;
            this.ordering_term();
            this.state = 1655;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
        this.state = 1657;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ROWS || _la===SQLiteParser.RANGE || _la===SQLiteParser.GROUPS) {
            this.state = 1656;
            this.frame_spec();
        }

        this.state = 1659;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Over_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_over_clause;
    return this;
}

Over_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Over_clauseContext.prototype.constructor = Over_clauseContext;

Over_clauseContext.prototype.OVER = function() {
    return this.getToken(SQLiteParser.OVER, 0);
};

Over_clauseContext.prototype.window_name = function() {
    return this.getTypedRuleContext(Window_nameContext,0);
};

Over_clauseContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Over_clauseContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Over_clauseContext.prototype.base_window_name = function() {
    return this.getTypedRuleContext(Base_window_nameContext,0);
};

Over_clauseContext.prototype.PARTITION = function() {
    return this.getToken(SQLiteParser.PARTITION, 0);
};

Over_clauseContext.prototype.BY = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.BY);
    } else {
        return this.getToken(SQLiteParser.BY, i);
    }
};


Over_clauseContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Over_clauseContext.prototype.ORDER = function() {
    return this.getToken(SQLiteParser.ORDER, 0);
};

Over_clauseContext.prototype.ordering_term = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Ordering_termContext);
    } else {
        return this.getTypedRuleContext(Ordering_termContext,i);
    }
};

Over_clauseContext.prototype.frame_spec = function() {
    return this.getTypedRuleContext(Frame_specContext,0);
};

Over_clauseContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Over_clauseContext = Over_clauseContext;

SQLiteParser.prototype.over_clause = function() {

    var localctx = new Over_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 118, SQLiteParser.RULE_over_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1661;
        this.match(SQLiteParser.OVER);
        this.state = 1695;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,247,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1662;
            this.window_name();
            break;

        case 2:
            this.state = 1663;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1665;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,241,this._ctx);
            if(la_===1) {
                this.state = 1664;
                this.base_window_name();

            }
            this.state = 1677;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1667;
                this.match(SQLiteParser.PARTITION);
                this.state = 1668;
                this.match(SQLiteParser.BY);
                this.state = 1669;
                this.expr(0);
                this.state = 1674;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1670;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1671;
                    this.expr(0);
                    this.state = 1676;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 1689;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ORDER) {
                this.state = 1679;
                this.match(SQLiteParser.ORDER);
                this.state = 1680;
                this.match(SQLiteParser.BY);
                this.state = 1681;
                this.ordering_term();
                this.state = 1686;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
                while(_la===SQLiteParser.COMMA) {
                    this.state = 1682;
                    this.match(SQLiteParser.COMMA);
                    this.state = 1683;
                    this.ordering_term();
                    this.state = 1688;
                    this._errHandler.sync(this);
                    _la = this._input.LA(1);
                }
            }

            this.state = 1692;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ROWS || _la===SQLiteParser.RANGE || _la===SQLiteParser.GROUPS) {
                this.state = 1691;
                this.frame_spec();
            }

            this.state = 1694;
            this.match(SQLiteParser.CLOSE_PAR);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Frame_specContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_frame_spec;
    return this;
}

Frame_specContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Frame_specContext.prototype.constructor = Frame_specContext;

Frame_specContext.prototype.frame_clause = function() {
    return this.getTypedRuleContext(Frame_clauseContext,0);
};

Frame_specContext.prototype.EXCLUDE = function() {
    return this.getToken(SQLiteParser.EXCLUDE, 0);
};

Frame_specContext.prototype.GROUP = function() {
    return this.getToken(SQLiteParser.GROUP, 0);
};

Frame_specContext.prototype.TIES = function() {
    return this.getToken(SQLiteParser.TIES, 0);
};

Frame_specContext.prototype.NO = function() {
    return this.getToken(SQLiteParser.NO, 0);
};

Frame_specContext.prototype.OTHERS = function() {
    return this.getToken(SQLiteParser.OTHERS, 0);
};

Frame_specContext.prototype.CURRENT = function() {
    return this.getToken(SQLiteParser.CURRENT, 0);
};

Frame_specContext.prototype.ROW = function() {
    return this.getToken(SQLiteParser.ROW, 0);
};




SQLiteParser.Frame_specContext = Frame_specContext;

SQLiteParser.prototype.frame_spec = function() {

    var localctx = new Frame_specContext(this, this._ctx, this.state);
    this.enterRule(localctx, 120, SQLiteParser.RULE_frame_spec);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1697;
        this.frame_clause();
        this.state = 1705;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case SQLiteParser.EXCLUDE:
        	this.state = 1698;
        	this.match(SQLiteParser.EXCLUDE);

        	this.state = 1699;
        	this.match(SQLiteParser.NO);
        	this.state = 1700;
        	this.match(SQLiteParser.OTHERS);
        	break;
        case SQLiteParser.CURRENT:
        	this.state = 1701;
        	this.match(SQLiteParser.CURRENT);
        	this.state = 1702;
        	this.match(SQLiteParser.ROW);
        	break;
        case SQLiteParser.GROUP:
        	this.state = 1703;
        	this.match(SQLiteParser.GROUP);
        	break;
        case SQLiteParser.TIES:
        	this.state = 1704;
        	this.match(SQLiteParser.TIES);
        	break;
        case SQLiteParser.CLOSE_PAR:
        	break;
        default:
        	break;
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Frame_clauseContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_frame_clause;
    return this;
}

Frame_clauseContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Frame_clauseContext.prototype.constructor = Frame_clauseContext;

Frame_clauseContext.prototype.RANGE = function() {
    return this.getToken(SQLiteParser.RANGE, 0);
};

Frame_clauseContext.prototype.ROWS = function() {
    return this.getToken(SQLiteParser.ROWS, 0);
};

Frame_clauseContext.prototype.GROUPS = function() {
    return this.getToken(SQLiteParser.GROUPS, 0);
};

Frame_clauseContext.prototype.frame_single = function() {
    return this.getTypedRuleContext(Frame_singleContext,0);
};

Frame_clauseContext.prototype.BETWEEN = function() {
    return this.getToken(SQLiteParser.BETWEEN, 0);
};

Frame_clauseContext.prototype.frame_left = function() {
    return this.getTypedRuleContext(Frame_leftContext,0);
};

Frame_clauseContext.prototype.AND = function() {
    return this.getToken(SQLiteParser.AND, 0);
};

Frame_clauseContext.prototype.frame_right = function() {
    return this.getTypedRuleContext(Frame_rightContext,0);
};




SQLiteParser.Frame_clauseContext = Frame_clauseContext;

SQLiteParser.prototype.frame_clause = function() {

    var localctx = new Frame_clauseContext(this, this._ctx, this.state);
    this.enterRule(localctx, 122, SQLiteParser.RULE_frame_clause);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1707;
        _la = this._input.LA(1);
        if(!(_la===SQLiteParser.ROWS || _la===SQLiteParser.RANGE || _la===SQLiteParser.GROUPS)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
        this.state = 1714;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,249,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1708;
            this.frame_single();
            break;

        case 2:
            this.state = 1709;
            this.match(SQLiteParser.BETWEEN);
            this.state = 1710;
            this.frame_left();
            this.state = 1711;
            this.match(SQLiteParser.AND);
            this.state = 1712;
            this.frame_right();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Simple_function_invocationContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_simple_function_invocation;
    return this;
}

Simple_function_invocationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Simple_function_invocationContext.prototype.constructor = Simple_function_invocationContext;

Simple_function_invocationContext.prototype.simple_func = function() {
    return this.getTypedRuleContext(Simple_funcContext,0);
};

Simple_function_invocationContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Simple_function_invocationContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Simple_function_invocationContext.prototype.STAR = function() {
    return this.getToken(SQLiteParser.STAR, 0);
};

Simple_function_invocationContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Simple_function_invocationContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Simple_function_invocationContext = Simple_function_invocationContext;

SQLiteParser.prototype.simple_function_invocation = function() {

    var localctx = new Simple_function_invocationContext(this, this._ctx, this.state);
    this.enterRule(localctx, 124, SQLiteParser.RULE_simple_function_invocation);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1716;
        this.simple_func();
        this.state = 1717;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1727;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.OPEN_PAR:
        case SQLiteParser.PLUS:
        case SQLiteParser.MINUS:
        case SQLiteParser.TILDE:
        case SQLiteParser.ABORT:
        case SQLiteParser.ACTION:
        case SQLiteParser.ADD:
        case SQLiteParser.AFTER:
        case SQLiteParser.ALL:
        case SQLiteParser.ALTER:
        case SQLiteParser.ANALYZE:
        case SQLiteParser.AND:
        case SQLiteParser.AS:
        case SQLiteParser.ASC:
        case SQLiteParser.ATTACH:
        case SQLiteParser.AUTOINCREMENT:
        case SQLiteParser.BEFORE:
        case SQLiteParser.BEGIN:
        case SQLiteParser.BETWEEN:
        case SQLiteParser.BY:
        case SQLiteParser.CASCADE:
        case SQLiteParser.CASE:
        case SQLiteParser.CAST:
        case SQLiteParser.CHECK:
        case SQLiteParser.COLLATE:
        case SQLiteParser.COLUMN:
        case SQLiteParser.COMMIT:
        case SQLiteParser.CONFLICT:
        case SQLiteParser.CONSTRAINT:
        case SQLiteParser.CREATE:
        case SQLiteParser.CROSS:
        case SQLiteParser.CURRENT_DATE:
        case SQLiteParser.CURRENT_TIME:
        case SQLiteParser.CURRENT_TIMESTAMP:
        case SQLiteParser.DATABASE:
        case SQLiteParser.DEFAULT:
        case SQLiteParser.DEFERRABLE:
        case SQLiteParser.DEFERRED:
        case SQLiteParser.DELETE:
        case SQLiteParser.DESC:
        case SQLiteParser.DETACH:
        case SQLiteParser.DISTINCT:
        case SQLiteParser.DROP:
        case SQLiteParser.EACH:
        case SQLiteParser.ELSE:
        case SQLiteParser.END:
        case SQLiteParser.ESCAPE:
        case SQLiteParser.EXCEPT:
        case SQLiteParser.EXCLUSIVE:
        case SQLiteParser.EXISTS:
        case SQLiteParser.EXPLAIN:
        case SQLiteParser.FAIL:
        case SQLiteParser.FOR:
        case SQLiteParser.FOREIGN:
        case SQLiteParser.FROM:
        case SQLiteParser.FULL:
        case SQLiteParser.GLOB:
        case SQLiteParser.GROUP:
        case SQLiteParser.HAVING:
        case SQLiteParser.IF:
        case SQLiteParser.IGNORE:
        case SQLiteParser.IMMEDIATE:
        case SQLiteParser.IN:
        case SQLiteParser.INDEX:
        case SQLiteParser.INDEXED:
        case SQLiteParser.INITIALLY:
        case SQLiteParser.INNER:
        case SQLiteParser.INSERT:
        case SQLiteParser.INSTEAD:
        case SQLiteParser.INTERSECT:
        case SQLiteParser.INTO:
        case SQLiteParser.IS:
        case SQLiteParser.ISNULL:
        case SQLiteParser.JOIN:
        case SQLiteParser.KEY:
        case SQLiteParser.LEFT:
        case SQLiteParser.LIKE:
        case SQLiteParser.LIMIT:
        case SQLiteParser.MATCH:
        case SQLiteParser.NATURAL:
        case SQLiteParser.NO:
        case SQLiteParser.NOT:
        case SQLiteParser.NOTNULL:
        case SQLiteParser.NULL:
        case SQLiteParser.OF:
        case SQLiteParser.OFFSET:
        case SQLiteParser.ON:
        case SQLiteParser.OR:
        case SQLiteParser.ORDER:
        case SQLiteParser.OUTER:
        case SQLiteParser.PLAN:
        case SQLiteParser.PRAGMA:
        case SQLiteParser.PRIMARY:
        case SQLiteParser.QUERY:
        case SQLiteParser.RAISE:
        case SQLiteParser.RECURSIVE:
        case SQLiteParser.REFERENCES:
        case SQLiteParser.REGEXP:
        case SQLiteParser.REINDEX:
        case SQLiteParser.RELEASE:
        case SQLiteParser.RENAME:
        case SQLiteParser.REPLACE:
        case SQLiteParser.RESTRICT:
        case SQLiteParser.RIGHT:
        case SQLiteParser.ROLLBACK:
        case SQLiteParser.ROW:
        case SQLiteParser.ROWS:
        case SQLiteParser.SAVEPOINT:
        case SQLiteParser.SELECT:
        case SQLiteParser.SET:
        case SQLiteParser.TABLE:
        case SQLiteParser.TEMP:
        case SQLiteParser.TEMPORARY:
        case SQLiteParser.THEN:
        case SQLiteParser.TO:
        case SQLiteParser.TRANSACTION:
        case SQLiteParser.TRIGGER:
        case SQLiteParser.UNION:
        case SQLiteParser.UNIQUE:
        case SQLiteParser.UPDATE:
        case SQLiteParser.USING:
        case SQLiteParser.VACUUM:
        case SQLiteParser.VALUES:
        case SQLiteParser.VIEW:
        case SQLiteParser.VIRTUAL:
        case SQLiteParser.WHEN:
        case SQLiteParser.WHERE:
        case SQLiteParser.WITH:
        case SQLiteParser.WITHOUT:
        case SQLiteParser.FIRST_VALUE:
        case SQLiteParser.OVER:
        case SQLiteParser.PARTITION:
        case SQLiteParser.RANGE:
        case SQLiteParser.PRECEDING:
        case SQLiteParser.UNBOUNDED:
        case SQLiteParser.CURRENT:
        case SQLiteParser.FOLLOWING:
        case SQLiteParser.CUME_DIST:
        case SQLiteParser.DENSE_RANK:
        case SQLiteParser.LAG:
        case SQLiteParser.LAST_VALUE:
        case SQLiteParser.LEAD:
        case SQLiteParser.NTH_VALUE:
        case SQLiteParser.NTILE:
        case SQLiteParser.PERCENT_RANK:
        case SQLiteParser.RANK:
        case SQLiteParser.ROW_NUMBER:
        case SQLiteParser.GENERATED:
        case SQLiteParser.ALWAYS:
        case SQLiteParser.STORED:
        case SQLiteParser.TRUE:
        case SQLiteParser.FALSE:
        case SQLiteParser.WINDOW:
        case SQLiteParser.NULLS:
        case SQLiteParser.FIRST:
        case SQLiteParser.LAST:
        case SQLiteParser.FILTER:
        case SQLiteParser.GROUPS:
        case SQLiteParser.EXCLUDE:
        case SQLiteParser.IDENTIFIER:
        case SQLiteParser.NUMERIC_LITERAL:
        case SQLiteParser.BIND_PARAMETER:
        case SQLiteParser.STRING_LITERAL:
        case SQLiteParser.BLOB_LITERAL:
            this.state = 1718;
            this.expr(0);
            this.state = 1723;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            while(_la===SQLiteParser.COMMA) {
                this.state = 1719;
                this.match(SQLiteParser.COMMA);
                this.state = 1720;
                this.expr(0);
                this.state = 1725;
                this._errHandler.sync(this);
                _la = this._input.LA(1);
            }
            break;
        case SQLiteParser.STAR:
            this.state = 1726;
            this.match(SQLiteParser.STAR);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
        this.state = 1729;
        this.match(SQLiteParser.CLOSE_PAR);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Aggregate_function_invocationContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_aggregate_function_invocation;
    return this;
}

Aggregate_function_invocationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Aggregate_function_invocationContext.prototype.constructor = Aggregate_function_invocationContext;

Aggregate_function_invocationContext.prototype.aggregate_func = function() {
    return this.getTypedRuleContext(Aggregate_funcContext,0);
};

Aggregate_function_invocationContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Aggregate_function_invocationContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Aggregate_function_invocationContext.prototype.STAR = function() {
    return this.getToken(SQLiteParser.STAR, 0);
};

Aggregate_function_invocationContext.prototype.filter_clause = function() {
    return this.getTypedRuleContext(Filter_clauseContext,0);
};

Aggregate_function_invocationContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Aggregate_function_invocationContext.prototype.DISTINCT = function() {
    return this.getToken(SQLiteParser.DISTINCT, 0);
};

Aggregate_function_invocationContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Aggregate_function_invocationContext = Aggregate_function_invocationContext;

SQLiteParser.prototype.aggregate_function_invocation = function() {

    var localctx = new Aggregate_function_invocationContext(this, this._ctx, this.state);
    this.enterRule(localctx, 126, SQLiteParser.RULE_aggregate_function_invocation);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1731;
        this.aggregate_func();
        this.state = 1732;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1745;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case SQLiteParser.OPEN_PAR:
        case SQLiteParser.PLUS:
        case SQLiteParser.MINUS:
        case SQLiteParser.TILDE:
        case SQLiteParser.ABORT:
        case SQLiteParser.ACTION:
        case SQLiteParser.ADD:
        case SQLiteParser.AFTER:
        case SQLiteParser.ALL:
        case SQLiteParser.ALTER:
        case SQLiteParser.ANALYZE:
        case SQLiteParser.AND:
        case SQLiteParser.AS:
        case SQLiteParser.ASC:
        case SQLiteParser.ATTACH:
        case SQLiteParser.AUTOINCREMENT:
        case SQLiteParser.BEFORE:
        case SQLiteParser.BEGIN:
        case SQLiteParser.BETWEEN:
        case SQLiteParser.BY:
        case SQLiteParser.CASCADE:
        case SQLiteParser.CASE:
        case SQLiteParser.CAST:
        case SQLiteParser.CHECK:
        case SQLiteParser.COLLATE:
        case SQLiteParser.COLUMN:
        case SQLiteParser.COMMIT:
        case SQLiteParser.CONFLICT:
        case SQLiteParser.CONSTRAINT:
        case SQLiteParser.CREATE:
        case SQLiteParser.CROSS:
        case SQLiteParser.CURRENT_DATE:
        case SQLiteParser.CURRENT_TIME:
        case SQLiteParser.CURRENT_TIMESTAMP:
        case SQLiteParser.DATABASE:
        case SQLiteParser.DEFAULT:
        case SQLiteParser.DEFERRABLE:
        case SQLiteParser.DEFERRED:
        case SQLiteParser.DELETE:
        case SQLiteParser.DESC:
        case SQLiteParser.DETACH:
        case SQLiteParser.DISTINCT:
        case SQLiteParser.DROP:
        case SQLiteParser.EACH:
        case SQLiteParser.ELSE:
        case SQLiteParser.END:
        case SQLiteParser.ESCAPE:
        case SQLiteParser.EXCEPT:
        case SQLiteParser.EXCLUSIVE:
        case SQLiteParser.EXISTS:
        case SQLiteParser.EXPLAIN:
        case SQLiteParser.FAIL:
        case SQLiteParser.FOR:
        case SQLiteParser.FOREIGN:
        case SQLiteParser.FROM:
        case SQLiteParser.FULL:
        case SQLiteParser.GLOB:
        case SQLiteParser.GROUP:
        case SQLiteParser.HAVING:
        case SQLiteParser.IF:
        case SQLiteParser.IGNORE:
        case SQLiteParser.IMMEDIATE:
        case SQLiteParser.IN:
        case SQLiteParser.INDEX:
        case SQLiteParser.INDEXED:
        case SQLiteParser.INITIALLY:
        case SQLiteParser.INNER:
        case SQLiteParser.INSERT:
        case SQLiteParser.INSTEAD:
        case SQLiteParser.INTERSECT:
        case SQLiteParser.INTO:
        case SQLiteParser.IS:
        case SQLiteParser.ISNULL:
        case SQLiteParser.JOIN:
        case SQLiteParser.KEY:
        case SQLiteParser.LEFT:
        case SQLiteParser.LIKE:
        case SQLiteParser.LIMIT:
        case SQLiteParser.MATCH:
        case SQLiteParser.NATURAL:
        case SQLiteParser.NO:
        case SQLiteParser.NOT:
        case SQLiteParser.NOTNULL:
        case SQLiteParser.NULL:
        case SQLiteParser.OF:
        case SQLiteParser.OFFSET:
        case SQLiteParser.ON:
        case SQLiteParser.OR:
        case SQLiteParser.ORDER:
        case SQLiteParser.OUTER:
        case SQLiteParser.PLAN:
        case SQLiteParser.PRAGMA:
        case SQLiteParser.PRIMARY:
        case SQLiteParser.QUERY:
        case SQLiteParser.RAISE:
        case SQLiteParser.RECURSIVE:
        case SQLiteParser.REFERENCES:
        case SQLiteParser.REGEXP:
        case SQLiteParser.REINDEX:
        case SQLiteParser.RELEASE:
        case SQLiteParser.RENAME:
        case SQLiteParser.REPLACE:
        case SQLiteParser.RESTRICT:
        case SQLiteParser.RIGHT:
        case SQLiteParser.ROLLBACK:
        case SQLiteParser.ROW:
        case SQLiteParser.ROWS:
        case SQLiteParser.SAVEPOINT:
        case SQLiteParser.SELECT:
        case SQLiteParser.SET:
        case SQLiteParser.TABLE:
        case SQLiteParser.TEMP:
        case SQLiteParser.TEMPORARY:
        case SQLiteParser.THEN:
        case SQLiteParser.TO:
        case SQLiteParser.TRANSACTION:
        case SQLiteParser.TRIGGER:
        case SQLiteParser.UNION:
        case SQLiteParser.UNIQUE:
        case SQLiteParser.UPDATE:
        case SQLiteParser.USING:
        case SQLiteParser.VACUUM:
        case SQLiteParser.VALUES:
        case SQLiteParser.VIEW:
        case SQLiteParser.VIRTUAL:
        case SQLiteParser.WHEN:
        case SQLiteParser.WHERE:
        case SQLiteParser.WITH:
        case SQLiteParser.WITHOUT:
        case SQLiteParser.FIRST_VALUE:
        case SQLiteParser.OVER:
        case SQLiteParser.PARTITION:
        case SQLiteParser.RANGE:
        case SQLiteParser.PRECEDING:
        case SQLiteParser.UNBOUNDED:
        case SQLiteParser.CURRENT:
        case SQLiteParser.FOLLOWING:
        case SQLiteParser.CUME_DIST:
        case SQLiteParser.DENSE_RANK:
        case SQLiteParser.LAG:
        case SQLiteParser.LAST_VALUE:
        case SQLiteParser.LEAD:
        case SQLiteParser.NTH_VALUE:
        case SQLiteParser.NTILE:
        case SQLiteParser.PERCENT_RANK:
        case SQLiteParser.RANK:
        case SQLiteParser.ROW_NUMBER:
        case SQLiteParser.GENERATED:
        case SQLiteParser.ALWAYS:
        case SQLiteParser.STORED:
        case SQLiteParser.TRUE:
        case SQLiteParser.FALSE:
        case SQLiteParser.WINDOW:
        case SQLiteParser.NULLS:
        case SQLiteParser.FIRST:
        case SQLiteParser.LAST:
        case SQLiteParser.FILTER:
        case SQLiteParser.GROUPS:
        case SQLiteParser.EXCLUDE:
        case SQLiteParser.IDENTIFIER:
        case SQLiteParser.NUMERIC_LITERAL:
        case SQLiteParser.BIND_PARAMETER:
        case SQLiteParser.STRING_LITERAL:
        case SQLiteParser.BLOB_LITERAL:
        	this.state = 1734;
        	this._errHandler.sync(this);
        	var la_ = this._interp.adaptivePredict(this._input,252,this._ctx);
        	if(la_===1) {
        	    this.state = 1733;
        	    this.match(SQLiteParser.DISTINCT);

        	}
        	this.state = 1736;
        	this.expr(0);
        	this.state = 1741;
        	this._errHandler.sync(this);
        	_la = this._input.LA(1);
        	while(_la===SQLiteParser.COMMA) {
        	    this.state = 1737;
        	    this.match(SQLiteParser.COMMA);
        	    this.state = 1738;
        	    this.expr(0);
        	    this.state = 1743;
        	    this._errHandler.sync(this);
        	    _la = this._input.LA(1);
        	}
        	break;
        case SQLiteParser.STAR:
        	this.state = 1744;
        	this.match(SQLiteParser.STAR);
        	break;
        case SQLiteParser.CLOSE_PAR:
        	break;
        default:
        	break;
        }
        this.state = 1747;
        this.match(SQLiteParser.CLOSE_PAR);
        this.state = 1749;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.FILTER) {
            this.state = 1748;
            this.filter_clause();
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Window_function_invocationContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_window_function_invocation;
    return this;
}

Window_function_invocationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Window_function_invocationContext.prototype.constructor = Window_function_invocationContext;

Window_function_invocationContext.prototype.window_function = function() {
    return this.getTypedRuleContext(Window_functionContext,0);
};

Window_function_invocationContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Window_function_invocationContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};

Window_function_invocationContext.prototype.OVER = function() {
    return this.getToken(SQLiteParser.OVER, 0);
};

Window_function_invocationContext.prototype.window_defn = function() {
    return this.getTypedRuleContext(Window_defnContext,0);
};

Window_function_invocationContext.prototype.window_name = function() {
    return this.getTypedRuleContext(Window_nameContext,0);
};

Window_function_invocationContext.prototype.STAR = function() {
    return this.getToken(SQLiteParser.STAR, 0);
};

Window_function_invocationContext.prototype.filter_clause = function() {
    return this.getTypedRuleContext(Filter_clauseContext,0);
};

Window_function_invocationContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Window_function_invocationContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Window_function_invocationContext = Window_function_invocationContext;

SQLiteParser.prototype.window_function_invocation = function() {

    var localctx = new Window_function_invocationContext(this, this._ctx, this.state);
    this.enterRule(localctx, 128, SQLiteParser.RULE_window_function_invocation);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1751;
        this.window_function();
        this.state = 1752;
        this.match(SQLiteParser.OPEN_PAR);
        this.state = 1762;
        this._errHandler.sync(this);
        switch (this._input.LA(1)) {
        case SQLiteParser.OPEN_PAR:
        case SQLiteParser.PLUS:
        case SQLiteParser.MINUS:
        case SQLiteParser.TILDE:
        case SQLiteParser.ABORT:
        case SQLiteParser.ACTION:
        case SQLiteParser.ADD:
        case SQLiteParser.AFTER:
        case SQLiteParser.ALL:
        case SQLiteParser.ALTER:
        case SQLiteParser.ANALYZE:
        case SQLiteParser.AND:
        case SQLiteParser.AS:
        case SQLiteParser.ASC:
        case SQLiteParser.ATTACH:
        case SQLiteParser.AUTOINCREMENT:
        case SQLiteParser.BEFORE:
        case SQLiteParser.BEGIN:
        case SQLiteParser.BETWEEN:
        case SQLiteParser.BY:
        case SQLiteParser.CASCADE:
        case SQLiteParser.CASE:
        case SQLiteParser.CAST:
        case SQLiteParser.CHECK:
        case SQLiteParser.COLLATE:
        case SQLiteParser.COLUMN:
        case SQLiteParser.COMMIT:
        case SQLiteParser.CONFLICT:
        case SQLiteParser.CONSTRAINT:
        case SQLiteParser.CREATE:
        case SQLiteParser.CROSS:
        case SQLiteParser.CURRENT_DATE:
        case SQLiteParser.CURRENT_TIME:
        case SQLiteParser.CURRENT_TIMESTAMP:
        case SQLiteParser.DATABASE:
        case SQLiteParser.DEFAULT:
        case SQLiteParser.DEFERRABLE:
        case SQLiteParser.DEFERRED:
        case SQLiteParser.DELETE:
        case SQLiteParser.DESC:
        case SQLiteParser.DETACH:
        case SQLiteParser.DISTINCT:
        case SQLiteParser.DROP:
        case SQLiteParser.EACH:
        case SQLiteParser.ELSE:
        case SQLiteParser.END:
        case SQLiteParser.ESCAPE:
        case SQLiteParser.EXCEPT:
        case SQLiteParser.EXCLUSIVE:
        case SQLiteParser.EXISTS:
        case SQLiteParser.EXPLAIN:
        case SQLiteParser.FAIL:
        case SQLiteParser.FOR:
        case SQLiteParser.FOREIGN:
        case SQLiteParser.FROM:
        case SQLiteParser.FULL:
        case SQLiteParser.GLOB:
        case SQLiteParser.GROUP:
        case SQLiteParser.HAVING:
        case SQLiteParser.IF:
        case SQLiteParser.IGNORE:
        case SQLiteParser.IMMEDIATE:
        case SQLiteParser.IN:
        case SQLiteParser.INDEX:
        case SQLiteParser.INDEXED:
        case SQLiteParser.INITIALLY:
        case SQLiteParser.INNER:
        case SQLiteParser.INSERT:
        case SQLiteParser.INSTEAD:
        case SQLiteParser.INTERSECT:
        case SQLiteParser.INTO:
        case SQLiteParser.IS:
        case SQLiteParser.ISNULL:
        case SQLiteParser.JOIN:
        case SQLiteParser.KEY:
        case SQLiteParser.LEFT:
        case SQLiteParser.LIKE:
        case SQLiteParser.LIMIT:
        case SQLiteParser.MATCH:
        case SQLiteParser.NATURAL:
        case SQLiteParser.NO:
        case SQLiteParser.NOT:
        case SQLiteParser.NOTNULL:
        case SQLiteParser.NULL:
        case SQLiteParser.OF:
        case SQLiteParser.OFFSET:
        case SQLiteParser.ON:
        case SQLiteParser.OR:
        case SQLiteParser.ORDER:
        case SQLiteParser.OUTER:
        case SQLiteParser.PLAN:
        case SQLiteParser.PRAGMA:
        case SQLiteParser.PRIMARY:
        case SQLiteParser.QUERY:
        case SQLiteParser.RAISE:
        case SQLiteParser.RECURSIVE:
        case SQLiteParser.REFERENCES:
        case SQLiteParser.REGEXP:
        case SQLiteParser.REINDEX:
        case SQLiteParser.RELEASE:
        case SQLiteParser.RENAME:
        case SQLiteParser.REPLACE:
        case SQLiteParser.RESTRICT:
        case SQLiteParser.RIGHT:
        case SQLiteParser.ROLLBACK:
        case SQLiteParser.ROW:
        case SQLiteParser.ROWS:
        case SQLiteParser.SAVEPOINT:
        case SQLiteParser.SELECT:
        case SQLiteParser.SET:
        case SQLiteParser.TABLE:
        case SQLiteParser.TEMP:
        case SQLiteParser.TEMPORARY:
        case SQLiteParser.THEN:
        case SQLiteParser.TO:
        case SQLiteParser.TRANSACTION:
        case SQLiteParser.TRIGGER:
        case SQLiteParser.UNION:
        case SQLiteParser.UNIQUE:
        case SQLiteParser.UPDATE:
        case SQLiteParser.USING:
        case SQLiteParser.VACUUM:
        case SQLiteParser.VALUES:
        case SQLiteParser.VIEW:
        case SQLiteParser.VIRTUAL:
        case SQLiteParser.WHEN:
        case SQLiteParser.WHERE:
        case SQLiteParser.WITH:
        case SQLiteParser.WITHOUT:
        case SQLiteParser.FIRST_VALUE:
        case SQLiteParser.OVER:
        case SQLiteParser.PARTITION:
        case SQLiteParser.RANGE:
        case SQLiteParser.PRECEDING:
        case SQLiteParser.UNBOUNDED:
        case SQLiteParser.CURRENT:
        case SQLiteParser.FOLLOWING:
        case SQLiteParser.CUME_DIST:
        case SQLiteParser.DENSE_RANK:
        case SQLiteParser.LAG:
        case SQLiteParser.LAST_VALUE:
        case SQLiteParser.LEAD:
        case SQLiteParser.NTH_VALUE:
        case SQLiteParser.NTILE:
        case SQLiteParser.PERCENT_RANK:
        case SQLiteParser.RANK:
        case SQLiteParser.ROW_NUMBER:
        case SQLiteParser.GENERATED:
        case SQLiteParser.ALWAYS:
        case SQLiteParser.STORED:
        case SQLiteParser.TRUE:
        case SQLiteParser.FALSE:
        case SQLiteParser.WINDOW:
        case SQLiteParser.NULLS:
        case SQLiteParser.FIRST:
        case SQLiteParser.LAST:
        case SQLiteParser.FILTER:
        case SQLiteParser.GROUPS:
        case SQLiteParser.EXCLUDE:
        case SQLiteParser.IDENTIFIER:
        case SQLiteParser.NUMERIC_LITERAL:
        case SQLiteParser.BIND_PARAMETER:
        case SQLiteParser.STRING_LITERAL:
        case SQLiteParser.BLOB_LITERAL:
        	this.state = 1753;
        	this.expr(0);
        	this.state = 1758;
        	this._errHandler.sync(this);
        	_la = this._input.LA(1);
        	while(_la===SQLiteParser.COMMA) {
        	    this.state = 1754;
        	    this.match(SQLiteParser.COMMA);
        	    this.state = 1755;
        	    this.expr(0);
        	    this.state = 1760;
        	    this._errHandler.sync(this);
        	    _la = this._input.LA(1);
        	}
        	break;
        case SQLiteParser.STAR:
        	this.state = 1761;
        	this.match(SQLiteParser.STAR);
        	break;
        case SQLiteParser.CLOSE_PAR:
        	break;
        default:
        	break;
        }
        this.state = 1764;
        this.match(SQLiteParser.CLOSE_PAR);
        this.state = 1766;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.FILTER) {
            this.state = 1765;
            this.filter_clause();
        }

        this.state = 1768;
        this.match(SQLiteParser.OVER);
        this.state = 1771;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,259,this._ctx);
        switch(la_) {
        case 1:
            this.state = 1769;
            this.window_defn();
            break;

        case 2:
            this.state = 1770;
            this.window_name();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Common_table_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_common_table_stmt;
    return this;
}

Common_table_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Common_table_stmtContext.prototype.constructor = Common_table_stmtContext;

Common_table_stmtContext.prototype.WITH = function() {
    return this.getToken(SQLiteParser.WITH, 0);
};

Common_table_stmtContext.prototype.common_table_expression = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Common_table_expressionContext);
    } else {
        return this.getTypedRuleContext(Common_table_expressionContext,i);
    }
};

Common_table_stmtContext.prototype.RECURSIVE = function() {
    return this.getToken(SQLiteParser.RECURSIVE, 0);
};

Common_table_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Common_table_stmtContext = Common_table_stmtContext;

SQLiteParser.prototype.common_table_stmt = function() {

    var localctx = new Common_table_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 130, SQLiteParser.RULE_common_table_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1773;
        this.match(SQLiteParser.WITH);
        this.state = 1775;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,260,this._ctx);
        if(la_===1) {
            this.state = 1774;
            this.match(SQLiteParser.RECURSIVE);

        }
        this.state = 1777;
        this.common_table_expression();
        this.state = 1782;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1778;
            this.match(SQLiteParser.COMMA);
            this.state = 1779;
            this.common_table_expression();
            this.state = 1784;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Order_by_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_order_by_stmt;
    return this;
}

Order_by_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Order_by_stmtContext.prototype.constructor = Order_by_stmtContext;

Order_by_stmtContext.prototype.ORDER = function() {
    return this.getToken(SQLiteParser.ORDER, 0);
};

Order_by_stmtContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Order_by_stmtContext.prototype.ordering_term = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Ordering_termContext);
    } else {
        return this.getTypedRuleContext(Ordering_termContext,i);
    }
};

Order_by_stmtContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Order_by_stmtContext = Order_by_stmtContext;

SQLiteParser.prototype.order_by_stmt = function() {

    var localctx = new Order_by_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 132, SQLiteParser.RULE_order_by_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1785;
        this.match(SQLiteParser.ORDER);
        this.state = 1786;
        this.match(SQLiteParser.BY);
        this.state = 1787;
        this.ordering_term();
        this.state = 1792;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1788;
            this.match(SQLiteParser.COMMA);
            this.state = 1789;
            this.ordering_term();
            this.state = 1794;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Limit_stmtContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_limit_stmt;
    return this;
}

Limit_stmtContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Limit_stmtContext.prototype.constructor = Limit_stmtContext;

Limit_stmtContext.prototype.LIMIT = function() {
    return this.getToken(SQLiteParser.LIMIT, 0);
};

Limit_stmtContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Limit_stmtContext.prototype.OFFSET = function() {
    return this.getToken(SQLiteParser.OFFSET, 0);
};

Limit_stmtContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};




SQLiteParser.Limit_stmtContext = Limit_stmtContext;

SQLiteParser.prototype.limit_stmt = function() {

    var localctx = new Limit_stmtContext(this, this._ctx, this.state);
    this.enterRule(localctx, 134, SQLiteParser.RULE_limit_stmt);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1795;
        this.match(SQLiteParser.LIMIT);
        this.state = 1796;
        this.expr(0);
        this.state = 1799;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.COMMA || _la===SQLiteParser.OFFSET) {
            this.state = 1797;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.COMMA || _la===SQLiteParser.OFFSET)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1798;
            this.expr(0);
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Ordering_termContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_ordering_term;
    return this;
}

Ordering_termContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Ordering_termContext.prototype.constructor = Ordering_termContext;

Ordering_termContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Ordering_termContext.prototype.COLLATE = function() {
    return this.getToken(SQLiteParser.COLLATE, 0);
};

Ordering_termContext.prototype.collation_name = function() {
    return this.getTypedRuleContext(Collation_nameContext,0);
};

Ordering_termContext.prototype.asc_desc = function() {
    return this.getTypedRuleContext(Asc_descContext,0);
};

Ordering_termContext.prototype.NULLS = function() {
    return this.getToken(SQLiteParser.NULLS, 0);
};

Ordering_termContext.prototype.FIRST = function() {
    return this.getToken(SQLiteParser.FIRST, 0);
};

Ordering_termContext.prototype.LAST = function() {
    return this.getToken(SQLiteParser.LAST, 0);
};




SQLiteParser.Ordering_termContext = Ordering_termContext;

SQLiteParser.prototype.ordering_term = function() {

    var localctx = new Ordering_termContext(this, this._ctx, this.state);
    this.enterRule(localctx, 136, SQLiteParser.RULE_ordering_term);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1801;
        this.expr(0);
        this.state = 1804;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.COLLATE) {
            this.state = 1802;
            this.match(SQLiteParser.COLLATE);
            this.state = 1803;
            this.collation_name();
        }

        this.state = 1807;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ASC || _la===SQLiteParser.DESC) {
            this.state = 1806;
            this.asc_desc();
        }

        this.state = 1811;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.NULLS) {
            this.state = 1809;
            this.match(SQLiteParser.NULLS);
            this.state = 1810;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.FIRST || _la===SQLiteParser.LAST)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
        }

    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Asc_descContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_asc_desc;
    return this;
}

Asc_descContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Asc_descContext.prototype.constructor = Asc_descContext;

Asc_descContext.prototype.ASC = function() {
    return this.getToken(SQLiteParser.ASC, 0);
};

Asc_descContext.prototype.DESC = function() {
    return this.getToken(SQLiteParser.DESC, 0);
};




SQLiteParser.Asc_descContext = Asc_descContext;

SQLiteParser.prototype.asc_desc = function() {

    var localctx = new Asc_descContext(this, this._ctx, this.state);
    this.enterRule(localctx, 138, SQLiteParser.RULE_asc_desc);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1813;
        _la = this._input.LA(1);
        if(!(_la===SQLiteParser.ASC || _la===SQLiteParser.DESC)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Frame_leftContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_frame_left;
    return this;
}

Frame_leftContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Frame_leftContext.prototype.constructor = Frame_leftContext;

Frame_leftContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Frame_leftContext.prototype.PRECEDING = function() {
    return this.getToken(SQLiteParser.PRECEDING, 0);
};

Frame_leftContext.prototype.FOLLOWING = function() {
    return this.getToken(SQLiteParser.FOLLOWING, 0);
};

Frame_leftContext.prototype.CURRENT = function() {
    return this.getToken(SQLiteParser.CURRENT, 0);
};

Frame_leftContext.prototype.ROW = function() {
    return this.getToken(SQLiteParser.ROW, 0);
};

Frame_leftContext.prototype.UNBOUNDED = function() {
    return this.getToken(SQLiteParser.UNBOUNDED, 0);
};




SQLiteParser.Frame_leftContext = Frame_leftContext;

SQLiteParser.prototype.frame_left = function() {

    var localctx = new Frame_leftContext(this, this._ctx, this.state);
    this.enterRule(localctx, 140, SQLiteParser.RULE_frame_left);
    try {
        this.state = 1825;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,267,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1815;
            this.expr(0);
            this.state = 1816;
            this.match(SQLiteParser.PRECEDING);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1818;
            this.expr(0);
            this.state = 1819;
            this.match(SQLiteParser.FOLLOWING);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1821;
            this.match(SQLiteParser.CURRENT);
            this.state = 1822;
            this.match(SQLiteParser.ROW);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1823;
            this.match(SQLiteParser.UNBOUNDED);
            this.state = 1824;
            this.match(SQLiteParser.PRECEDING);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Frame_rightContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_frame_right;
    return this;
}

Frame_rightContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Frame_rightContext.prototype.constructor = Frame_rightContext;

Frame_rightContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Frame_rightContext.prototype.PRECEDING = function() {
    return this.getToken(SQLiteParser.PRECEDING, 0);
};

Frame_rightContext.prototype.FOLLOWING = function() {
    return this.getToken(SQLiteParser.FOLLOWING, 0);
};

Frame_rightContext.prototype.CURRENT = function() {
    return this.getToken(SQLiteParser.CURRENT, 0);
};

Frame_rightContext.prototype.ROW = function() {
    return this.getToken(SQLiteParser.ROW, 0);
};

Frame_rightContext.prototype.UNBOUNDED = function() {
    return this.getToken(SQLiteParser.UNBOUNDED, 0);
};




SQLiteParser.Frame_rightContext = Frame_rightContext;

SQLiteParser.prototype.frame_right = function() {

    var localctx = new Frame_rightContext(this, this._ctx, this.state);
    this.enterRule(localctx, 142, SQLiteParser.RULE_frame_right);
    try {
        this.state = 1837;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,268,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1827;
            this.expr(0);
            this.state = 1828;
            this.match(SQLiteParser.PRECEDING);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1830;
            this.expr(0);
            this.state = 1831;
            this.match(SQLiteParser.FOLLOWING);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1833;
            this.match(SQLiteParser.CURRENT);
            this.state = 1834;
            this.match(SQLiteParser.ROW);
            break;

        case 4:
            this.enterOuterAlt(localctx, 4);
            this.state = 1835;
            this.match(SQLiteParser.UNBOUNDED);
            this.state = 1836;
            this.match(SQLiteParser.FOLLOWING);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Frame_singleContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_frame_single;
    return this;
}

Frame_singleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Frame_singleContext.prototype.constructor = Frame_singleContext;

Frame_singleContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Frame_singleContext.prototype.PRECEDING = function() {
    return this.getToken(SQLiteParser.PRECEDING, 0);
};

Frame_singleContext.prototype.UNBOUNDED = function() {
    return this.getToken(SQLiteParser.UNBOUNDED, 0);
};

Frame_singleContext.prototype.CURRENT = function() {
    return this.getToken(SQLiteParser.CURRENT, 0);
};

Frame_singleContext.prototype.ROW = function() {
    return this.getToken(SQLiteParser.ROW, 0);
};




SQLiteParser.Frame_singleContext = Frame_singleContext;

SQLiteParser.prototype.frame_single = function() {

    var localctx = new Frame_singleContext(this, this._ctx, this.state);
    this.enterRule(localctx, 144, SQLiteParser.RULE_frame_single);
    try {
        this.state = 1846;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,269,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1839;
            this.expr(0);
            this.state = 1840;
            this.match(SQLiteParser.PRECEDING);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1842;
            this.match(SQLiteParser.UNBOUNDED);
            this.state = 1843;
            this.match(SQLiteParser.PRECEDING);
            break;

        case 3:
            this.enterOuterAlt(localctx, 3);
            this.state = 1844;
            this.match(SQLiteParser.CURRENT);
            this.state = 1845;
            this.match(SQLiteParser.ROW);
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Window_functionContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_window_function;
    return this;
}

Window_functionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Window_functionContext.prototype.constructor = Window_functionContext;

Window_functionContext.prototype.OPEN_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.OPEN_PAR);
    } else {
        return this.getToken(SQLiteParser.OPEN_PAR, i);
    }
};


Window_functionContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Window_functionContext.prototype.CLOSE_PAR = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.CLOSE_PAR);
    } else {
        return this.getToken(SQLiteParser.CLOSE_PAR, i);
    }
};


Window_functionContext.prototype.OVER = function() {
    return this.getToken(SQLiteParser.OVER, 0);
};

Window_functionContext.prototype.order_by_expr_asc_desc = function() {
    return this.getTypedRuleContext(Order_by_expr_asc_descContext,0);
};

Window_functionContext.prototype.FIRST_VALUE = function() {
    return this.getToken(SQLiteParser.FIRST_VALUE, 0);
};

Window_functionContext.prototype.LAST_VALUE = function() {
    return this.getToken(SQLiteParser.LAST_VALUE, 0);
};

Window_functionContext.prototype.partition_by = function() {
    return this.getTypedRuleContext(Partition_byContext,0);
};

Window_functionContext.prototype.frame_clause = function() {
    return this.getTypedRuleContext(Frame_clauseContext,0);
};

Window_functionContext.prototype.CUME_DIST = function() {
    return this.getToken(SQLiteParser.CUME_DIST, 0);
};

Window_functionContext.prototype.PERCENT_RANK = function() {
    return this.getToken(SQLiteParser.PERCENT_RANK, 0);
};

Window_functionContext.prototype.order_by_expr = function() {
    return this.getTypedRuleContext(Order_by_exprContext,0);
};

Window_functionContext.prototype.DENSE_RANK = function() {
    return this.getToken(SQLiteParser.DENSE_RANK, 0);
};

Window_functionContext.prototype.RANK = function() {
    return this.getToken(SQLiteParser.RANK, 0);
};

Window_functionContext.prototype.ROW_NUMBER = function() {
    return this.getToken(SQLiteParser.ROW_NUMBER, 0);
};

Window_functionContext.prototype.LAG = function() {
    return this.getToken(SQLiteParser.LAG, 0);
};

Window_functionContext.prototype.LEAD = function() {
    return this.getToken(SQLiteParser.LEAD, 0);
};

Window_functionContext.prototype.offset = function() {
    return this.getTypedRuleContext(OffsetContext,0);
};

Window_functionContext.prototype.default_value = function() {
    return this.getTypedRuleContext(Default_valueContext,0);
};

Window_functionContext.prototype.NTH_VALUE = function() {
    return this.getToken(SQLiteParser.NTH_VALUE, 0);
};

Window_functionContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};

Window_functionContext.prototype.signed_number = function() {
    return this.getTypedRuleContext(Signed_numberContext,0);
};

Window_functionContext.prototype.NTILE = function() {
    return this.getToken(SQLiteParser.NTILE, 0);
};




SQLiteParser.Window_functionContext = Window_functionContext;

SQLiteParser.prototype.window_function = function() {

    var localctx = new Window_functionContext(this, this._ctx, this.state);
    this.enterRule(localctx, 146, SQLiteParser.RULE_window_function);
    var _la = 0; // Token type
    try {
        this.state = 1933;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.FIRST_VALUE:
        case SQLiteParser.LAST_VALUE:
            this.enterOuterAlt(localctx, 1);
            this.state = 1848;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.FIRST_VALUE || _la===SQLiteParser.LAST_VALUE)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1849;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1850;
            this.expr(0);
            this.state = 1851;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1852;
            this.match(SQLiteParser.OVER);
            this.state = 1853;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1855;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1854;
                this.partition_by();
            }

            this.state = 1857;
            this.order_by_expr_asc_desc();
            this.state = 1859;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ROWS || _la===SQLiteParser.RANGE || _la===SQLiteParser.GROUPS) {
                this.state = 1858;
                this.frame_clause();
            }

            this.state = 1861;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.CUME_DIST:
        case SQLiteParser.PERCENT_RANK:
            this.enterOuterAlt(localctx, 2);
            this.state = 1863;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.CUME_DIST || _la===SQLiteParser.PERCENT_RANK)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1864;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1865;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1866;
            this.match(SQLiteParser.OVER);
            this.state = 1867;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1869;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1868;
                this.partition_by();
            }

            this.state = 1872;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ORDER) {
                this.state = 1871;
                this.order_by_expr();
            }

            this.state = 1874;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.DENSE_RANK:
        case SQLiteParser.RANK:
        case SQLiteParser.ROW_NUMBER:
            this.enterOuterAlt(localctx, 3);
            this.state = 1875;
            _la = this._input.LA(1);
            if(!(((((_la - 159)) & ~0x1f) == 0 && ((1 << (_la - 159)) & ((1 << (SQLiteParser.DENSE_RANK - 159)) | (1 << (SQLiteParser.RANK - 159)) | (1 << (SQLiteParser.ROW_NUMBER - 159)))) !== 0))) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1876;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1877;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1878;
            this.match(SQLiteParser.OVER);
            this.state = 1879;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1881;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1880;
                this.partition_by();
            }

            this.state = 1883;
            this.order_by_expr_asc_desc();
            this.state = 1884;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.LAG:
        case SQLiteParser.LEAD:
            this.enterOuterAlt(localctx, 4);
            this.state = 1886;
            _la = this._input.LA(1);
            if(!(_la===SQLiteParser.LAG || _la===SQLiteParser.LEAD)) {
            this._errHandler.recoverInline(this);
            }
            else {
            	this._errHandler.reportMatch(this);
                this.consume();
            }
            this.state = 1887;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1888;
            this.expr(0);
            this.state = 1890;
            this._errHandler.sync(this);
            var la_ = this._interp.adaptivePredict(this._input,275,this._ctx);
            if(la_===1) {
                this.state = 1889;
                this.offset();

            }
            this.state = 1893;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.COMMA) {
                this.state = 1892;
                this.default_value();
            }

            this.state = 1895;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1896;
            this.match(SQLiteParser.OVER);
            this.state = 1897;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1899;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1898;
                this.partition_by();
            }

            this.state = 1901;
            this.order_by_expr_asc_desc();
            this.state = 1902;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.NTH_VALUE:
            this.enterOuterAlt(localctx, 5);
            this.state = 1904;
            this.match(SQLiteParser.NTH_VALUE);
            this.state = 1905;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1906;
            this.expr(0);
            this.state = 1907;
            this.match(SQLiteParser.COMMA);
            this.state = 1908;
            this.signed_number();
            this.state = 1909;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1910;
            this.match(SQLiteParser.OVER);
            this.state = 1911;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1913;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1912;
                this.partition_by();
            }

            this.state = 1915;
            this.order_by_expr_asc_desc();
            this.state = 1917;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ROWS || _la===SQLiteParser.RANGE || _la===SQLiteParser.GROUPS) {
                this.state = 1916;
                this.frame_clause();
            }

            this.state = 1919;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        case SQLiteParser.NTILE:
            this.enterOuterAlt(localctx, 6);
            this.state = 1921;
            this.match(SQLiteParser.NTILE);
            this.state = 1922;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1923;
            this.expr(0);
            this.state = 1924;
            this.match(SQLiteParser.CLOSE_PAR);
            this.state = 1925;
            this.match(SQLiteParser.OVER);
            this.state = 1926;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 1928;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.PARTITION) {
                this.state = 1927;
                this.partition_by();
            }

            this.state = 1930;
            this.order_by_expr_asc_desc();
            this.state = 1931;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function OffsetContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_offset;
    return this;
}

OffsetContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
OffsetContext.prototype.constructor = OffsetContext;

OffsetContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};

OffsetContext.prototype.signed_number = function() {
    return this.getTypedRuleContext(Signed_numberContext,0);
};




SQLiteParser.OffsetContext = OffsetContext;

SQLiteParser.prototype.offset = function() {

    var localctx = new OffsetContext(this, this._ctx, this.state);
    this.enterRule(localctx, 148, SQLiteParser.RULE_offset);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1935;
        this.match(SQLiteParser.COMMA);
        this.state = 1936;
        this.signed_number();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Default_valueContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_default_value;
    return this;
}

Default_valueContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Default_valueContext.prototype.constructor = Default_valueContext;

Default_valueContext.prototype.COMMA = function() {
    return this.getToken(SQLiteParser.COMMA, 0);
};

Default_valueContext.prototype.signed_number = function() {
    return this.getTypedRuleContext(Signed_numberContext,0);
};




SQLiteParser.Default_valueContext = Default_valueContext;

SQLiteParser.prototype.default_value = function() {

    var localctx = new Default_valueContext(this, this._ctx, this.state);
    this.enterRule(localctx, 150, SQLiteParser.RULE_default_value);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1938;
        this.match(SQLiteParser.COMMA);
        this.state = 1939;
        this.signed_number();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Partition_byContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_partition_by;
    return this;
}

Partition_byContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Partition_byContext.prototype.constructor = Partition_byContext;

Partition_byContext.prototype.PARTITION = function() {
    return this.getToken(SQLiteParser.PARTITION, 0);
};

Partition_byContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Partition_byContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};




SQLiteParser.Partition_byContext = Partition_byContext;

SQLiteParser.prototype.partition_by = function() {

    var localctx = new Partition_byContext(this, this._ctx, this.state);
    this.enterRule(localctx, 152, SQLiteParser.RULE_partition_by);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1941;
        this.match(SQLiteParser.PARTITION);
        this.state = 1942;
        this.match(SQLiteParser.BY);
        this.state = 1944; 
        this._errHandler.sync(this);
        var _alt = 1;
        do {
        	switch (_alt) {
        	case 1:
        		this.state = 1943;
        		this.expr(0);
        		break;
        	default:
        		throw new antlr4.error.NoViableAltException(this);
        	}
        	this.state = 1946; 
        	this._errHandler.sync(this);
        	_alt = this._interp.adaptivePredict(this._input,282, this._ctx);
        } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Order_by_exprContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_order_by_expr;
    return this;
}

Order_by_exprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Order_by_exprContext.prototype.constructor = Order_by_exprContext;

Order_by_exprContext.prototype.ORDER = function() {
    return this.getToken(SQLiteParser.ORDER, 0);
};

Order_by_exprContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Order_by_exprContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};




SQLiteParser.Order_by_exprContext = Order_by_exprContext;

SQLiteParser.prototype.order_by_expr = function() {

    var localctx = new Order_by_exprContext(this, this._ctx, this.state);
    this.enterRule(localctx, 154, SQLiteParser.RULE_order_by_expr);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1948;
        this.match(SQLiteParser.ORDER);
        this.state = 1949;
        this.match(SQLiteParser.BY);
        this.state = 1951; 
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        do {
            this.state = 1950;
            this.expr(0);
            this.state = 1953; 
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.OPEN_PAR) | (1 << SQLiteParser.PLUS) | (1 << SQLiteParser.MINUS) | (1 << SQLiteParser.TILDE) | (1 << SQLiteParser.ABORT) | (1 << SQLiteParser.ACTION) | (1 << SQLiteParser.ADD) | (1 << SQLiteParser.AFTER) | (1 << SQLiteParser.ALL) | (1 << SQLiteParser.ALTER) | (1 << SQLiteParser.ANALYZE))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (SQLiteParser.AND - 32)) | (1 << (SQLiteParser.AS - 32)) | (1 << (SQLiteParser.ASC - 32)) | (1 << (SQLiteParser.ATTACH - 32)) | (1 << (SQLiteParser.AUTOINCREMENT - 32)) | (1 << (SQLiteParser.BEFORE - 32)) | (1 << (SQLiteParser.BEGIN - 32)) | (1 << (SQLiteParser.BETWEEN - 32)) | (1 << (SQLiteParser.BY - 32)) | (1 << (SQLiteParser.CASCADE - 32)) | (1 << (SQLiteParser.CASE - 32)) | (1 << (SQLiteParser.CAST - 32)) | (1 << (SQLiteParser.CHECK - 32)) | (1 << (SQLiteParser.COLLATE - 32)) | (1 << (SQLiteParser.COLUMN - 32)) | (1 << (SQLiteParser.COMMIT - 32)) | (1 << (SQLiteParser.CONFLICT - 32)) | (1 << (SQLiteParser.CONSTRAINT - 32)) | (1 << (SQLiteParser.CREATE - 32)) | (1 << (SQLiteParser.CROSS - 32)) | (1 << (SQLiteParser.CURRENT_DATE - 32)) | (1 << (SQLiteParser.CURRENT_TIME - 32)) | (1 << (SQLiteParser.CURRENT_TIMESTAMP - 32)) | (1 << (SQLiteParser.DATABASE - 32)) | (1 << (SQLiteParser.DEFAULT - 32)) | (1 << (SQLiteParser.DEFERRABLE - 32)) | (1 << (SQLiteParser.DEFERRED - 32)) | (1 << (SQLiteParser.DELETE - 32)) | (1 << (SQLiteParser.DESC - 32)) | (1 << (SQLiteParser.DETACH - 32)) | (1 << (SQLiteParser.DISTINCT - 32)) | (1 << (SQLiteParser.DROP - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (SQLiteParser.EACH - 64)) | (1 << (SQLiteParser.ELSE - 64)) | (1 << (SQLiteParser.END - 64)) | (1 << (SQLiteParser.ESCAPE - 64)) | (1 << (SQLiteParser.EXCEPT - 64)) | (1 << (SQLiteParser.EXCLUSIVE - 64)) | (1 << (SQLiteParser.EXISTS - 64)) | (1 << (SQLiteParser.EXPLAIN - 64)) | (1 << (SQLiteParser.FAIL - 64)) | (1 << (SQLiteParser.FOR - 64)) | (1 << (SQLiteParser.FOREIGN - 64)) | (1 << (SQLiteParser.FROM - 64)) | (1 << (SQLiteParser.FULL - 64)) | (1 << (SQLiteParser.GLOB - 64)) | (1 << (SQLiteParser.GROUP - 64)) | (1 << (SQLiteParser.HAVING - 64)) | (1 << (SQLiteParser.IF - 64)) | (1 << (SQLiteParser.IGNORE - 64)) | (1 << (SQLiteParser.IMMEDIATE - 64)) | (1 << (SQLiteParser.IN - 64)) | (1 << (SQLiteParser.INDEX - 64)) | (1 << (SQLiteParser.INDEXED - 64)) | (1 << (SQLiteParser.INITIALLY - 64)) | (1 << (SQLiteParser.INNER - 64)) | (1 << (SQLiteParser.INSERT - 64)) | (1 << (SQLiteParser.INSTEAD - 64)) | (1 << (SQLiteParser.INTERSECT - 64)) | (1 << (SQLiteParser.INTO - 64)) | (1 << (SQLiteParser.IS - 64)) | (1 << (SQLiteParser.ISNULL - 64)) | (1 << (SQLiteParser.JOIN - 64)) | (1 << (SQLiteParser.KEY - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (SQLiteParser.LEFT - 96)) | (1 << (SQLiteParser.LIKE - 96)) | (1 << (SQLiteParser.LIMIT - 96)) | (1 << (SQLiteParser.MATCH - 96)) | (1 << (SQLiteParser.NATURAL - 96)) | (1 << (SQLiteParser.NO - 96)) | (1 << (SQLiteParser.NOT - 96)) | (1 << (SQLiteParser.NOTNULL - 96)) | (1 << (SQLiteParser.NULL - 96)) | (1 << (SQLiteParser.OF - 96)) | (1 << (SQLiteParser.OFFSET - 96)) | (1 << (SQLiteParser.ON - 96)) | (1 << (SQLiteParser.OR - 96)) | (1 << (SQLiteParser.ORDER - 96)) | (1 << (SQLiteParser.OUTER - 96)) | (1 << (SQLiteParser.PLAN - 96)) | (1 << (SQLiteParser.PRAGMA - 96)) | (1 << (SQLiteParser.PRIMARY - 96)) | (1 << (SQLiteParser.QUERY - 96)) | (1 << (SQLiteParser.RAISE - 96)) | (1 << (SQLiteParser.RECURSIVE - 96)) | (1 << (SQLiteParser.REFERENCES - 96)) | (1 << (SQLiteParser.REGEXP - 96)) | (1 << (SQLiteParser.REINDEX - 96)) | (1 << (SQLiteParser.RELEASE - 96)) | (1 << (SQLiteParser.RENAME - 96)) | (1 << (SQLiteParser.REPLACE - 96)) | (1 << (SQLiteParser.RESTRICT - 96)) | (1 << (SQLiteParser.RIGHT - 96)) | (1 << (SQLiteParser.ROLLBACK - 96)) | (1 << (SQLiteParser.ROW - 96)) | (1 << (SQLiteParser.ROWS - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (SQLiteParser.SAVEPOINT - 128)) | (1 << (SQLiteParser.SELECT - 128)) | (1 << (SQLiteParser.SET - 128)) | (1 << (SQLiteParser.TABLE - 128)) | (1 << (SQLiteParser.TEMP - 128)) | (1 << (SQLiteParser.TEMPORARY - 128)) | (1 << (SQLiteParser.THEN - 128)) | (1 << (SQLiteParser.TO - 128)) | (1 << (SQLiteParser.TRANSACTION - 128)) | (1 << (SQLiteParser.TRIGGER - 128)) | (1 << (SQLiteParser.UNION - 128)) | (1 << (SQLiteParser.UNIQUE - 128)) | (1 << (SQLiteParser.UPDATE - 128)) | (1 << (SQLiteParser.USING - 128)) | (1 << (SQLiteParser.VACUUM - 128)) | (1 << (SQLiteParser.VALUES - 128)) | (1 << (SQLiteParser.VIEW - 128)) | (1 << (SQLiteParser.VIRTUAL - 128)) | (1 << (SQLiteParser.WHEN - 128)) | (1 << (SQLiteParser.WHERE - 128)) | (1 << (SQLiteParser.WITH - 128)) | (1 << (SQLiteParser.WITHOUT - 128)) | (1 << (SQLiteParser.FIRST_VALUE - 128)) | (1 << (SQLiteParser.OVER - 128)) | (1 << (SQLiteParser.PARTITION - 128)) | (1 << (SQLiteParser.RANGE - 128)) | (1 << (SQLiteParser.PRECEDING - 128)) | (1 << (SQLiteParser.UNBOUNDED - 128)) | (1 << (SQLiteParser.CURRENT - 128)) | (1 << (SQLiteParser.FOLLOWING - 128)) | (1 << (SQLiteParser.CUME_DIST - 128)) | (1 << (SQLiteParser.DENSE_RANK - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (SQLiteParser.LAG - 160)) | (1 << (SQLiteParser.LAST_VALUE - 160)) | (1 << (SQLiteParser.LEAD - 160)) | (1 << (SQLiteParser.NTH_VALUE - 160)) | (1 << (SQLiteParser.NTILE - 160)) | (1 << (SQLiteParser.PERCENT_RANK - 160)) | (1 << (SQLiteParser.RANK - 160)) | (1 << (SQLiteParser.ROW_NUMBER - 160)) | (1 << (SQLiteParser.GENERATED - 160)) | (1 << (SQLiteParser.ALWAYS - 160)) | (1 << (SQLiteParser.STORED - 160)) | (1 << (SQLiteParser.TRUE - 160)) | (1 << (SQLiteParser.FALSE - 160)) | (1 << (SQLiteParser.WINDOW - 160)) | (1 << (SQLiteParser.NULLS - 160)) | (1 << (SQLiteParser.FIRST - 160)) | (1 << (SQLiteParser.LAST - 160)) | (1 << (SQLiteParser.FILTER - 160)) | (1 << (SQLiteParser.GROUPS - 160)) | (1 << (SQLiteParser.EXCLUDE - 160)) | (1 << (SQLiteParser.IDENTIFIER - 160)) | (1 << (SQLiteParser.NUMERIC_LITERAL - 160)) | (1 << (SQLiteParser.BIND_PARAMETER - 160)) | (1 << (SQLiteParser.STRING_LITERAL - 160)) | (1 << (SQLiteParser.BLOB_LITERAL - 160)))) !== 0));
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Order_by_expr_asc_descContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_order_by_expr_asc_desc;
    return this;
}

Order_by_expr_asc_descContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Order_by_expr_asc_descContext.prototype.constructor = Order_by_expr_asc_descContext;

Order_by_expr_asc_descContext.prototype.ORDER = function() {
    return this.getToken(SQLiteParser.ORDER, 0);
};

Order_by_expr_asc_descContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

Order_by_expr_asc_descContext.prototype.order_by_expr_asc_desc = function() {
    return this.getTypedRuleContext(Order_by_expr_asc_descContext,0);
};




SQLiteParser.Order_by_expr_asc_descContext = Order_by_expr_asc_descContext;

SQLiteParser.prototype.order_by_expr_asc_desc = function() {

    var localctx = new Order_by_expr_asc_descContext(this, this._ctx, this.state);
    this.enterRule(localctx, 156, SQLiteParser.RULE_order_by_expr_asc_desc);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1955;
        this.match(SQLiteParser.ORDER);
        this.state = 1956;
        this.match(SQLiteParser.BY);
        this.state = 1957;
        this.order_by_expr_asc_desc();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Expr_asc_descContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_expr_asc_desc;
    return this;
}

Expr_asc_descContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Expr_asc_descContext.prototype.constructor = Expr_asc_descContext;

Expr_asc_descContext.prototype.expr = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(ExprContext);
    } else {
        return this.getTypedRuleContext(ExprContext,i);
    }
};

Expr_asc_descContext.prototype.asc_desc = function(i) {
    if(i===undefined) {
        i = null;
    }
    if(i===null) {
        return this.getTypedRuleContexts(Asc_descContext);
    } else {
        return this.getTypedRuleContext(Asc_descContext,i);
    }
};

Expr_asc_descContext.prototype.COMMA = function(i) {
	if(i===undefined) {
		i = null;
	}
    if(i===null) {
        return this.getTokens(SQLiteParser.COMMA);
    } else {
        return this.getToken(SQLiteParser.COMMA, i);
    }
};





SQLiteParser.Expr_asc_descContext = Expr_asc_descContext;

SQLiteParser.prototype.expr_asc_desc = function() {

    var localctx = new Expr_asc_descContext(this, this._ctx, this.state);
    this.enterRule(localctx, 158, SQLiteParser.RULE_expr_asc_desc);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1959;
        this.expr(0);
        this.state = 1961;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        if(_la===SQLiteParser.ASC || _la===SQLiteParser.DESC) {
            this.state = 1960;
            this.asc_desc();
        }

        this.state = 1970;
        this._errHandler.sync(this);
        _la = this._input.LA(1);
        while(_la===SQLiteParser.COMMA) {
            this.state = 1963;
            this.match(SQLiteParser.COMMA);
            this.state = 1964;
            this.expr(0);
            this.state = 1966;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
            if(_la===SQLiteParser.ASC || _la===SQLiteParser.DESC) {
                this.state = 1965;
                this.asc_desc();
            }

            this.state = 1972;
            this._errHandler.sync(this);
            _la = this._input.LA(1);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Initial_selectContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_initial_select;
    return this;
}

Initial_selectContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Initial_selectContext.prototype.constructor = Initial_selectContext;

Initial_selectContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};




SQLiteParser.Initial_selectContext = Initial_selectContext;

SQLiteParser.prototype.initial_select = function() {

    var localctx = new Initial_selectContext(this, this._ctx, this.state);
    this.enterRule(localctx, 160, SQLiteParser.RULE_initial_select);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1973;
        this.select_stmt();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Recursive_selectContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_recursive_select;
    return this;
}

Recursive_selectContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Recursive_selectContext.prototype.constructor = Recursive_selectContext;

Recursive_selectContext.prototype.select_stmt = function() {
    return this.getTypedRuleContext(Select_stmtContext,0);
};




SQLiteParser.Recursive_selectContext = Recursive_selectContext;

SQLiteParser.prototype.recursive_select = function() {

    var localctx = new Recursive_selectContext(this, this._ctx, this.state);
    this.enterRule(localctx, 162, SQLiteParser.RULE_recursive_select);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1975;
        this.select_stmt();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Unary_operatorContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_unary_operator;
    return this;
}

Unary_operatorContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Unary_operatorContext.prototype.constructor = Unary_operatorContext;

Unary_operatorContext.prototype.MINUS = function() {
    return this.getToken(SQLiteParser.MINUS, 0);
};

Unary_operatorContext.prototype.PLUS = function() {
    return this.getToken(SQLiteParser.PLUS, 0);
};

Unary_operatorContext.prototype.TILDE = function() {
    return this.getToken(SQLiteParser.TILDE, 0);
};

Unary_operatorContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};




SQLiteParser.Unary_operatorContext = Unary_operatorContext;

SQLiteParser.prototype.unary_operator = function() {

    var localctx = new Unary_operatorContext(this, this._ctx, this.state);
    this.enterRule(localctx, 164, SQLiteParser.RULE_unary_operator);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1977;
        _la = this._input.LA(1);
        if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << SQLiteParser.PLUS) | (1 << SQLiteParser.MINUS) | (1 << SQLiteParser.TILDE))) !== 0) || _la===SQLiteParser.NOT)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Error_messageContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_error_message;
    return this;
}

Error_messageContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Error_messageContext.prototype.constructor = Error_messageContext;

Error_messageContext.prototype.STRING_LITERAL = function() {
    return this.getToken(SQLiteParser.STRING_LITERAL, 0);
};




SQLiteParser.Error_messageContext = Error_messageContext;

SQLiteParser.prototype.error_message = function() {

    var localctx = new Error_messageContext(this, this._ctx, this.state);
    this.enterRule(localctx, 166, SQLiteParser.RULE_error_message);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1979;
        this.match(SQLiteParser.STRING_LITERAL);
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Module_argumentContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_module_argument;
    return this;
}

Module_argumentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Module_argumentContext.prototype.constructor = Module_argumentContext;

Module_argumentContext.prototype.expr = function() {
    return this.getTypedRuleContext(ExprContext,0);
};

Module_argumentContext.prototype.column_def = function() {
    return this.getTypedRuleContext(Column_defContext,0);
};




SQLiteParser.Module_argumentContext = Module_argumentContext;

SQLiteParser.prototype.module_argument = function() {

    var localctx = new Module_argumentContext(this, this._ctx, this.state);
    this.enterRule(localctx, 168, SQLiteParser.RULE_module_argument);
    try {
        this.state = 1983;
        this._errHandler.sync(this);
        var la_ = this._interp.adaptivePredict(this._input,287,this._ctx);
        switch(la_) {
        case 1:
            this.enterOuterAlt(localctx, 1);
            this.state = 1981;
            this.expr(0);
            break;

        case 2:
            this.enterOuterAlt(localctx, 2);
            this.state = 1982;
            this.column_def();
            break;

        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Column_aliasContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_column_alias;
    return this;
}

Column_aliasContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Column_aliasContext.prototype.constructor = Column_aliasContext;

Column_aliasContext.prototype.IDENTIFIER = function() {
    return this.getToken(SQLiteParser.IDENTIFIER, 0);
};

Column_aliasContext.prototype.STRING_LITERAL = function() {
    return this.getToken(SQLiteParser.STRING_LITERAL, 0);
};




SQLiteParser.Column_aliasContext = Column_aliasContext;

SQLiteParser.prototype.column_alias = function() {

    var localctx = new Column_aliasContext(this, this._ctx, this.state);
    this.enterRule(localctx, 170, SQLiteParser.RULE_column_alias);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1985;
        _la = this._input.LA(1);
        if(!(_la===SQLiteParser.IDENTIFIER || _la===SQLiteParser.STRING_LITERAL)) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function KeywordContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_keyword;
    return this;
}

KeywordContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
KeywordContext.prototype.constructor = KeywordContext;

KeywordContext.prototype.ABORT = function() {
    return this.getToken(SQLiteParser.ABORT, 0);
};

KeywordContext.prototype.ACTION = function() {
    return this.getToken(SQLiteParser.ACTION, 0);
};

KeywordContext.prototype.ADD = function() {
    return this.getToken(SQLiteParser.ADD, 0);
};

KeywordContext.prototype.AFTER = function() {
    return this.getToken(SQLiteParser.AFTER, 0);
};

KeywordContext.prototype.ALL = function() {
    return this.getToken(SQLiteParser.ALL, 0);
};

KeywordContext.prototype.ALTER = function() {
    return this.getToken(SQLiteParser.ALTER, 0);
};

KeywordContext.prototype.ANALYZE = function() {
    return this.getToken(SQLiteParser.ANALYZE, 0);
};

KeywordContext.prototype.AND = function() {
    return this.getToken(SQLiteParser.AND, 0);
};

KeywordContext.prototype.AS = function() {
    return this.getToken(SQLiteParser.AS, 0);
};

KeywordContext.prototype.ASC = function() {
    return this.getToken(SQLiteParser.ASC, 0);
};

KeywordContext.prototype.ATTACH = function() {
    return this.getToken(SQLiteParser.ATTACH, 0);
};

KeywordContext.prototype.AUTOINCREMENT = function() {
    return this.getToken(SQLiteParser.AUTOINCREMENT, 0);
};

KeywordContext.prototype.BEFORE = function() {
    return this.getToken(SQLiteParser.BEFORE, 0);
};

KeywordContext.prototype.BEGIN = function() {
    return this.getToken(SQLiteParser.BEGIN, 0);
};

KeywordContext.prototype.BETWEEN = function() {
    return this.getToken(SQLiteParser.BETWEEN, 0);
};

KeywordContext.prototype.BY = function() {
    return this.getToken(SQLiteParser.BY, 0);
};

KeywordContext.prototype.CASCADE = function() {
    return this.getToken(SQLiteParser.CASCADE, 0);
};

KeywordContext.prototype.CASE = function() {
    return this.getToken(SQLiteParser.CASE, 0);
};

KeywordContext.prototype.CAST = function() {
    return this.getToken(SQLiteParser.CAST, 0);
};

KeywordContext.prototype.CHECK = function() {
    return this.getToken(SQLiteParser.CHECK, 0);
};

KeywordContext.prototype.COLLATE = function() {
    return this.getToken(SQLiteParser.COLLATE, 0);
};

KeywordContext.prototype.COLUMN = function() {
    return this.getToken(SQLiteParser.COLUMN, 0);
};

KeywordContext.prototype.COMMIT = function() {
    return this.getToken(SQLiteParser.COMMIT, 0);
};

KeywordContext.prototype.CONFLICT = function() {
    return this.getToken(SQLiteParser.CONFLICT, 0);
};

KeywordContext.prototype.CONSTRAINT = function() {
    return this.getToken(SQLiteParser.CONSTRAINT, 0);
};

KeywordContext.prototype.CREATE = function() {
    return this.getToken(SQLiteParser.CREATE, 0);
};

KeywordContext.prototype.CROSS = function() {
    return this.getToken(SQLiteParser.CROSS, 0);
};

KeywordContext.prototype.CURRENT_DATE = function() {
    return this.getToken(SQLiteParser.CURRENT_DATE, 0);
};

KeywordContext.prototype.CURRENT_TIME = function() {
    return this.getToken(SQLiteParser.CURRENT_TIME, 0);
};

KeywordContext.prototype.CURRENT_TIMESTAMP = function() {
    return this.getToken(SQLiteParser.CURRENT_TIMESTAMP, 0);
};

KeywordContext.prototype.DATABASE = function() {
    return this.getToken(SQLiteParser.DATABASE, 0);
};

KeywordContext.prototype.DEFAULT = function() {
    return this.getToken(SQLiteParser.DEFAULT, 0);
};

KeywordContext.prototype.DEFERRABLE = function() {
    return this.getToken(SQLiteParser.DEFERRABLE, 0);
};

KeywordContext.prototype.DEFERRED = function() {
    return this.getToken(SQLiteParser.DEFERRED, 0);
};

KeywordContext.prototype.DELETE = function() {
    return this.getToken(SQLiteParser.DELETE, 0);
};

KeywordContext.prototype.DESC = function() {
    return this.getToken(SQLiteParser.DESC, 0);
};

KeywordContext.prototype.DETACH = function() {
    return this.getToken(SQLiteParser.DETACH, 0);
};

KeywordContext.prototype.DISTINCT = function() {
    return this.getToken(SQLiteParser.DISTINCT, 0);
};

KeywordContext.prototype.DROP = function() {
    return this.getToken(SQLiteParser.DROP, 0);
};

KeywordContext.prototype.EACH = function() {
    return this.getToken(SQLiteParser.EACH, 0);
};

KeywordContext.prototype.ELSE = function() {
    return this.getToken(SQLiteParser.ELSE, 0);
};

KeywordContext.prototype.END = function() {
    return this.getToken(SQLiteParser.END, 0);
};

KeywordContext.prototype.ESCAPE = function() {
    return this.getToken(SQLiteParser.ESCAPE, 0);
};

KeywordContext.prototype.EXCEPT = function() {
    return this.getToken(SQLiteParser.EXCEPT, 0);
};

KeywordContext.prototype.EXCLUSIVE = function() {
    return this.getToken(SQLiteParser.EXCLUSIVE, 0);
};

KeywordContext.prototype.EXISTS = function() {
    return this.getToken(SQLiteParser.EXISTS, 0);
};

KeywordContext.prototype.EXPLAIN = function() {
    return this.getToken(SQLiteParser.EXPLAIN, 0);
};

KeywordContext.prototype.FAIL = function() {
    return this.getToken(SQLiteParser.FAIL, 0);
};

KeywordContext.prototype.FOR = function() {
    return this.getToken(SQLiteParser.FOR, 0);
};

KeywordContext.prototype.FOREIGN = function() {
    return this.getToken(SQLiteParser.FOREIGN, 0);
};

KeywordContext.prototype.FROM = function() {
    return this.getToken(SQLiteParser.FROM, 0);
};

KeywordContext.prototype.FULL = function() {
    return this.getToken(SQLiteParser.FULL, 0);
};

KeywordContext.prototype.GLOB = function() {
    return this.getToken(SQLiteParser.GLOB, 0);
};

KeywordContext.prototype.GROUP = function() {
    return this.getToken(SQLiteParser.GROUP, 0);
};

KeywordContext.prototype.HAVING = function() {
    return this.getToken(SQLiteParser.HAVING, 0);
};

KeywordContext.prototype.IF = function() {
    return this.getToken(SQLiteParser.IF, 0);
};

KeywordContext.prototype.IGNORE = function() {
    return this.getToken(SQLiteParser.IGNORE, 0);
};

KeywordContext.prototype.IMMEDIATE = function() {
    return this.getToken(SQLiteParser.IMMEDIATE, 0);
};

KeywordContext.prototype.IN = function() {
    return this.getToken(SQLiteParser.IN, 0);
};

KeywordContext.prototype.INDEX = function() {
    return this.getToken(SQLiteParser.INDEX, 0);
};

KeywordContext.prototype.INDEXED = function() {
    return this.getToken(SQLiteParser.INDEXED, 0);
};

KeywordContext.prototype.INITIALLY = function() {
    return this.getToken(SQLiteParser.INITIALLY, 0);
};

KeywordContext.prototype.INNER = function() {
    return this.getToken(SQLiteParser.INNER, 0);
};

KeywordContext.prototype.INSERT = function() {
    return this.getToken(SQLiteParser.INSERT, 0);
};

KeywordContext.prototype.INSTEAD = function() {
    return this.getToken(SQLiteParser.INSTEAD, 0);
};

KeywordContext.prototype.INTERSECT = function() {
    return this.getToken(SQLiteParser.INTERSECT, 0);
};

KeywordContext.prototype.INTO = function() {
    return this.getToken(SQLiteParser.INTO, 0);
};

KeywordContext.prototype.IS = function() {
    return this.getToken(SQLiteParser.IS, 0);
};

KeywordContext.prototype.ISNULL = function() {
    return this.getToken(SQLiteParser.ISNULL, 0);
};

KeywordContext.prototype.JOIN = function() {
    return this.getToken(SQLiteParser.JOIN, 0);
};

KeywordContext.prototype.KEY = function() {
    return this.getToken(SQLiteParser.KEY, 0);
};

KeywordContext.prototype.LEFT = function() {
    return this.getToken(SQLiteParser.LEFT, 0);
};

KeywordContext.prototype.LIKE = function() {
    return this.getToken(SQLiteParser.LIKE, 0);
};

KeywordContext.prototype.LIMIT = function() {
    return this.getToken(SQLiteParser.LIMIT, 0);
};

KeywordContext.prototype.MATCH = function() {
    return this.getToken(SQLiteParser.MATCH, 0);
};

KeywordContext.prototype.NATURAL = function() {
    return this.getToken(SQLiteParser.NATURAL, 0);
};

KeywordContext.prototype.NO = function() {
    return this.getToken(SQLiteParser.NO, 0);
};

KeywordContext.prototype.NOT = function() {
    return this.getToken(SQLiteParser.NOT, 0);
};

KeywordContext.prototype.NOTNULL = function() {
    return this.getToken(SQLiteParser.NOTNULL, 0);
};

KeywordContext.prototype.NULL = function() {
    return this.getToken(SQLiteParser.NULL, 0);
};

KeywordContext.prototype.OF = function() {
    return this.getToken(SQLiteParser.OF, 0);
};

KeywordContext.prototype.OFFSET = function() {
    return this.getToken(SQLiteParser.OFFSET, 0);
};

KeywordContext.prototype.ON = function() {
    return this.getToken(SQLiteParser.ON, 0);
};

KeywordContext.prototype.OR = function() {
    return this.getToken(SQLiteParser.OR, 0);
};

KeywordContext.prototype.ORDER = function() {
    return this.getToken(SQLiteParser.ORDER, 0);
};

KeywordContext.prototype.OUTER = function() {
    return this.getToken(SQLiteParser.OUTER, 0);
};

KeywordContext.prototype.PLAN = function() {
    return this.getToken(SQLiteParser.PLAN, 0);
};

KeywordContext.prototype.PRAGMA = function() {
    return this.getToken(SQLiteParser.PRAGMA, 0);
};

KeywordContext.prototype.PRIMARY = function() {
    return this.getToken(SQLiteParser.PRIMARY, 0);
};

KeywordContext.prototype.QUERY = function() {
    return this.getToken(SQLiteParser.QUERY, 0);
};

KeywordContext.prototype.RAISE = function() {
    return this.getToken(SQLiteParser.RAISE, 0);
};

KeywordContext.prototype.RECURSIVE = function() {
    return this.getToken(SQLiteParser.RECURSIVE, 0);
};

KeywordContext.prototype.REFERENCES = function() {
    return this.getToken(SQLiteParser.REFERENCES, 0);
};

KeywordContext.prototype.REGEXP = function() {
    return this.getToken(SQLiteParser.REGEXP, 0);
};

KeywordContext.prototype.REINDEX = function() {
    return this.getToken(SQLiteParser.REINDEX, 0);
};

KeywordContext.prototype.RELEASE = function() {
    return this.getToken(SQLiteParser.RELEASE, 0);
};

KeywordContext.prototype.RENAME = function() {
    return this.getToken(SQLiteParser.RENAME, 0);
};

KeywordContext.prototype.REPLACE = function() {
    return this.getToken(SQLiteParser.REPLACE, 0);
};

KeywordContext.prototype.RESTRICT = function() {
    return this.getToken(SQLiteParser.RESTRICT, 0);
};

KeywordContext.prototype.RIGHT = function() {
    return this.getToken(SQLiteParser.RIGHT, 0);
};

KeywordContext.prototype.ROLLBACK = function() {
    return this.getToken(SQLiteParser.ROLLBACK, 0);
};

KeywordContext.prototype.ROW = function() {
    return this.getToken(SQLiteParser.ROW, 0);
};

KeywordContext.prototype.ROWS = function() {
    return this.getToken(SQLiteParser.ROWS, 0);
};

KeywordContext.prototype.SAVEPOINT = function() {
    return this.getToken(SQLiteParser.SAVEPOINT, 0);
};

KeywordContext.prototype.SELECT = function() {
    return this.getToken(SQLiteParser.SELECT, 0);
};

KeywordContext.prototype.SET = function() {
    return this.getToken(SQLiteParser.SET, 0);
};

KeywordContext.prototype.TABLE = function() {
    return this.getToken(SQLiteParser.TABLE, 0);
};

KeywordContext.prototype.TEMP = function() {
    return this.getToken(SQLiteParser.TEMP, 0);
};

KeywordContext.prototype.TEMPORARY = function() {
    return this.getToken(SQLiteParser.TEMPORARY, 0);
};

KeywordContext.prototype.THEN = function() {
    return this.getToken(SQLiteParser.THEN, 0);
};

KeywordContext.prototype.TO = function() {
    return this.getToken(SQLiteParser.TO, 0);
};

KeywordContext.prototype.TRANSACTION = function() {
    return this.getToken(SQLiteParser.TRANSACTION, 0);
};

KeywordContext.prototype.TRIGGER = function() {
    return this.getToken(SQLiteParser.TRIGGER, 0);
};

KeywordContext.prototype.UNION = function() {
    return this.getToken(SQLiteParser.UNION, 0);
};

KeywordContext.prototype.UNIQUE = function() {
    return this.getToken(SQLiteParser.UNIQUE, 0);
};

KeywordContext.prototype.UPDATE = function() {
    return this.getToken(SQLiteParser.UPDATE, 0);
};

KeywordContext.prototype.USING = function() {
    return this.getToken(SQLiteParser.USING, 0);
};

KeywordContext.prototype.VACUUM = function() {
    return this.getToken(SQLiteParser.VACUUM, 0);
};

KeywordContext.prototype.VALUES = function() {
    return this.getToken(SQLiteParser.VALUES, 0);
};

KeywordContext.prototype.VIEW = function() {
    return this.getToken(SQLiteParser.VIEW, 0);
};

KeywordContext.prototype.VIRTUAL = function() {
    return this.getToken(SQLiteParser.VIRTUAL, 0);
};

KeywordContext.prototype.WHEN = function() {
    return this.getToken(SQLiteParser.WHEN, 0);
};

KeywordContext.prototype.WHERE = function() {
    return this.getToken(SQLiteParser.WHERE, 0);
};

KeywordContext.prototype.WITH = function() {
    return this.getToken(SQLiteParser.WITH, 0);
};

KeywordContext.prototype.WITHOUT = function() {
    return this.getToken(SQLiteParser.WITHOUT, 0);
};

KeywordContext.prototype.FIRST_VALUE = function() {
    return this.getToken(SQLiteParser.FIRST_VALUE, 0);
};

KeywordContext.prototype.OVER = function() {
    return this.getToken(SQLiteParser.OVER, 0);
};

KeywordContext.prototype.PARTITION = function() {
    return this.getToken(SQLiteParser.PARTITION, 0);
};

KeywordContext.prototype.RANGE = function() {
    return this.getToken(SQLiteParser.RANGE, 0);
};

KeywordContext.prototype.PRECEDING = function() {
    return this.getToken(SQLiteParser.PRECEDING, 0);
};

KeywordContext.prototype.UNBOUNDED = function() {
    return this.getToken(SQLiteParser.UNBOUNDED, 0);
};

KeywordContext.prototype.CURRENT = function() {
    return this.getToken(SQLiteParser.CURRENT, 0);
};

KeywordContext.prototype.FOLLOWING = function() {
    return this.getToken(SQLiteParser.FOLLOWING, 0);
};

KeywordContext.prototype.CUME_DIST = function() {
    return this.getToken(SQLiteParser.CUME_DIST, 0);
};

KeywordContext.prototype.DENSE_RANK = function() {
    return this.getToken(SQLiteParser.DENSE_RANK, 0);
};

KeywordContext.prototype.LAG = function() {
    return this.getToken(SQLiteParser.LAG, 0);
};

KeywordContext.prototype.LAST_VALUE = function() {
    return this.getToken(SQLiteParser.LAST_VALUE, 0);
};

KeywordContext.prototype.LEAD = function() {
    return this.getToken(SQLiteParser.LEAD, 0);
};

KeywordContext.prototype.NTH_VALUE = function() {
    return this.getToken(SQLiteParser.NTH_VALUE, 0);
};

KeywordContext.prototype.NTILE = function() {
    return this.getToken(SQLiteParser.NTILE, 0);
};

KeywordContext.prototype.PERCENT_RANK = function() {
    return this.getToken(SQLiteParser.PERCENT_RANK, 0);
};

KeywordContext.prototype.RANK = function() {
    return this.getToken(SQLiteParser.RANK, 0);
};

KeywordContext.prototype.ROW_NUMBER = function() {
    return this.getToken(SQLiteParser.ROW_NUMBER, 0);
};

KeywordContext.prototype.GENERATED = function() {
    return this.getToken(SQLiteParser.GENERATED, 0);
};

KeywordContext.prototype.ALWAYS = function() {
    return this.getToken(SQLiteParser.ALWAYS, 0);
};

KeywordContext.prototype.STORED = function() {
    return this.getToken(SQLiteParser.STORED, 0);
};

KeywordContext.prototype.TRUE = function() {
    return this.getToken(SQLiteParser.TRUE, 0);
};

KeywordContext.prototype.FALSE = function() {
    return this.getToken(SQLiteParser.FALSE, 0);
};

KeywordContext.prototype.WINDOW = function() {
    return this.getToken(SQLiteParser.WINDOW, 0);
};

KeywordContext.prototype.NULLS = function() {
    return this.getToken(SQLiteParser.NULLS, 0);
};

KeywordContext.prototype.FIRST = function() {
    return this.getToken(SQLiteParser.FIRST, 0);
};

KeywordContext.prototype.LAST = function() {
    return this.getToken(SQLiteParser.LAST, 0);
};

KeywordContext.prototype.FILTER = function() {
    return this.getToken(SQLiteParser.FILTER, 0);
};

KeywordContext.prototype.GROUPS = function() {
    return this.getToken(SQLiteParser.GROUPS, 0);
};

KeywordContext.prototype.EXCLUDE = function() {
    return this.getToken(SQLiteParser.EXCLUDE, 0);
};




SQLiteParser.KeywordContext = KeywordContext;

SQLiteParser.prototype.keyword = function() {

    var localctx = new KeywordContext(this, this._ctx, this.state);
    this.enterRule(localctx, 172, SQLiteParser.RULE_keyword);
    var _la = 0; // Token type
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1987;
        _la = this._input.LA(1);
        if(!(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (SQLiteParser.ABORT - 25)) | (1 << (SQLiteParser.ACTION - 25)) | (1 << (SQLiteParser.ADD - 25)) | (1 << (SQLiteParser.AFTER - 25)) | (1 << (SQLiteParser.ALL - 25)) | (1 << (SQLiteParser.ALTER - 25)) | (1 << (SQLiteParser.ANALYZE - 25)) | (1 << (SQLiteParser.AND - 25)) | (1 << (SQLiteParser.AS - 25)) | (1 << (SQLiteParser.ASC - 25)) | (1 << (SQLiteParser.ATTACH - 25)) | (1 << (SQLiteParser.AUTOINCREMENT - 25)) | (1 << (SQLiteParser.BEFORE - 25)) | (1 << (SQLiteParser.BEGIN - 25)) | (1 << (SQLiteParser.BETWEEN - 25)) | (1 << (SQLiteParser.BY - 25)) | (1 << (SQLiteParser.CASCADE - 25)) | (1 << (SQLiteParser.CASE - 25)) | (1 << (SQLiteParser.CAST - 25)) | (1 << (SQLiteParser.CHECK - 25)) | (1 << (SQLiteParser.COLLATE - 25)) | (1 << (SQLiteParser.COLUMN - 25)) | (1 << (SQLiteParser.COMMIT - 25)) | (1 << (SQLiteParser.CONFLICT - 25)) | (1 << (SQLiteParser.CONSTRAINT - 25)) | (1 << (SQLiteParser.CREATE - 25)) | (1 << (SQLiteParser.CROSS - 25)) | (1 << (SQLiteParser.CURRENT_DATE - 25)) | (1 << (SQLiteParser.CURRENT_TIME - 25)) | (1 << (SQLiteParser.CURRENT_TIMESTAMP - 25)) | (1 << (SQLiteParser.DATABASE - 25)) | (1 << (SQLiteParser.DEFAULT - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (SQLiteParser.DEFERRABLE - 57)) | (1 << (SQLiteParser.DEFERRED - 57)) | (1 << (SQLiteParser.DELETE - 57)) | (1 << (SQLiteParser.DESC - 57)) | (1 << (SQLiteParser.DETACH - 57)) | (1 << (SQLiteParser.DISTINCT - 57)) | (1 << (SQLiteParser.DROP - 57)) | (1 << (SQLiteParser.EACH - 57)) | (1 << (SQLiteParser.ELSE - 57)) | (1 << (SQLiteParser.END - 57)) | (1 << (SQLiteParser.ESCAPE - 57)) | (1 << (SQLiteParser.EXCEPT - 57)) | (1 << (SQLiteParser.EXCLUSIVE - 57)) | (1 << (SQLiteParser.EXISTS - 57)) | (1 << (SQLiteParser.EXPLAIN - 57)) | (1 << (SQLiteParser.FAIL - 57)) | (1 << (SQLiteParser.FOR - 57)) | (1 << (SQLiteParser.FOREIGN - 57)) | (1 << (SQLiteParser.FROM - 57)) | (1 << (SQLiteParser.FULL - 57)) | (1 << (SQLiteParser.GLOB - 57)) | (1 << (SQLiteParser.GROUP - 57)) | (1 << (SQLiteParser.HAVING - 57)) | (1 << (SQLiteParser.IF - 57)) | (1 << (SQLiteParser.IGNORE - 57)) | (1 << (SQLiteParser.IMMEDIATE - 57)) | (1 << (SQLiteParser.IN - 57)) | (1 << (SQLiteParser.INDEX - 57)) | (1 << (SQLiteParser.INDEXED - 57)) | (1 << (SQLiteParser.INITIALLY - 57)) | (1 << (SQLiteParser.INNER - 57)) | (1 << (SQLiteParser.INSERT - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (SQLiteParser.INSTEAD - 89)) | (1 << (SQLiteParser.INTERSECT - 89)) | (1 << (SQLiteParser.INTO - 89)) | (1 << (SQLiteParser.IS - 89)) | (1 << (SQLiteParser.ISNULL - 89)) | (1 << (SQLiteParser.JOIN - 89)) | (1 << (SQLiteParser.KEY - 89)) | (1 << (SQLiteParser.LEFT - 89)) | (1 << (SQLiteParser.LIKE - 89)) | (1 << (SQLiteParser.LIMIT - 89)) | (1 << (SQLiteParser.MATCH - 89)) | (1 << (SQLiteParser.NATURAL - 89)) | (1 << (SQLiteParser.NO - 89)) | (1 << (SQLiteParser.NOT - 89)) | (1 << (SQLiteParser.NOTNULL - 89)) | (1 << (SQLiteParser.NULL - 89)) | (1 << (SQLiteParser.OF - 89)) | (1 << (SQLiteParser.OFFSET - 89)) | (1 << (SQLiteParser.ON - 89)) | (1 << (SQLiteParser.OR - 89)) | (1 << (SQLiteParser.ORDER - 89)) | (1 << (SQLiteParser.OUTER - 89)) | (1 << (SQLiteParser.PLAN - 89)) | (1 << (SQLiteParser.PRAGMA - 89)) | (1 << (SQLiteParser.PRIMARY - 89)) | (1 << (SQLiteParser.QUERY - 89)) | (1 << (SQLiteParser.RAISE - 89)) | (1 << (SQLiteParser.RECURSIVE - 89)) | (1 << (SQLiteParser.REFERENCES - 89)) | (1 << (SQLiteParser.REGEXP - 89)) | (1 << (SQLiteParser.REINDEX - 89)) | (1 << (SQLiteParser.RELEASE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (SQLiteParser.RENAME - 121)) | (1 << (SQLiteParser.REPLACE - 121)) | (1 << (SQLiteParser.RESTRICT - 121)) | (1 << (SQLiteParser.RIGHT - 121)) | (1 << (SQLiteParser.ROLLBACK - 121)) | (1 << (SQLiteParser.ROW - 121)) | (1 << (SQLiteParser.ROWS - 121)) | (1 << (SQLiteParser.SAVEPOINT - 121)) | (1 << (SQLiteParser.SELECT - 121)) | (1 << (SQLiteParser.SET - 121)) | (1 << (SQLiteParser.TABLE - 121)) | (1 << (SQLiteParser.TEMP - 121)) | (1 << (SQLiteParser.TEMPORARY - 121)) | (1 << (SQLiteParser.THEN - 121)) | (1 << (SQLiteParser.TO - 121)) | (1 << (SQLiteParser.TRANSACTION - 121)) | (1 << (SQLiteParser.TRIGGER - 121)) | (1 << (SQLiteParser.UNION - 121)) | (1 << (SQLiteParser.UNIQUE - 121)) | (1 << (SQLiteParser.UPDATE - 121)) | (1 << (SQLiteParser.USING - 121)) | (1 << (SQLiteParser.VACUUM - 121)) | (1 << (SQLiteParser.VALUES - 121)) | (1 << (SQLiteParser.VIEW - 121)) | (1 << (SQLiteParser.VIRTUAL - 121)) | (1 << (SQLiteParser.WHEN - 121)) | (1 << (SQLiteParser.WHERE - 121)) | (1 << (SQLiteParser.WITH - 121)) | (1 << (SQLiteParser.WITHOUT - 121)) | (1 << (SQLiteParser.FIRST_VALUE - 121)) | (1 << (SQLiteParser.OVER - 121)) | (1 << (SQLiteParser.PARTITION - 121)))) !== 0) || ((((_la - 153)) & ~0x1f) == 0 && ((1 << (_la - 153)) & ((1 << (SQLiteParser.RANGE - 153)) | (1 << (SQLiteParser.PRECEDING - 153)) | (1 << (SQLiteParser.UNBOUNDED - 153)) | (1 << (SQLiteParser.CURRENT - 153)) | (1 << (SQLiteParser.FOLLOWING - 153)) | (1 << (SQLiteParser.CUME_DIST - 153)) | (1 << (SQLiteParser.DENSE_RANK - 153)) | (1 << (SQLiteParser.LAG - 153)) | (1 << (SQLiteParser.LAST_VALUE - 153)) | (1 << (SQLiteParser.LEAD - 153)) | (1 << (SQLiteParser.NTH_VALUE - 153)) | (1 << (SQLiteParser.NTILE - 153)) | (1 << (SQLiteParser.PERCENT_RANK - 153)) | (1 << (SQLiteParser.RANK - 153)) | (1 << (SQLiteParser.ROW_NUMBER - 153)) | (1 << (SQLiteParser.GENERATED - 153)) | (1 << (SQLiteParser.ALWAYS - 153)) | (1 << (SQLiteParser.STORED - 153)) | (1 << (SQLiteParser.TRUE - 153)) | (1 << (SQLiteParser.FALSE - 153)) | (1 << (SQLiteParser.WINDOW - 153)) | (1 << (SQLiteParser.NULLS - 153)) | (1 << (SQLiteParser.FIRST - 153)) | (1 << (SQLiteParser.LAST - 153)) | (1 << (SQLiteParser.FILTER - 153)) | (1 << (SQLiteParser.GROUPS - 153)) | (1 << (SQLiteParser.EXCLUDE - 153)))) !== 0))) {
        this._errHandler.recoverInline(this);
        }
        else {
        	this._errHandler.reportMatch(this);
            this.consume();
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function NameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_name;
    return this;
}

NameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
NameContext.prototype.constructor = NameContext;

NameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.NameContext = NameContext;

SQLiteParser.prototype.name = function() {

    var localctx = new NameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 174, SQLiteParser.RULE_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1989;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Function_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_function_name;
    return this;
}

Function_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Function_nameContext.prototype.constructor = Function_nameContext;

Function_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Function_nameContext = Function_nameContext;

SQLiteParser.prototype.function_name = function() {

    var localctx = new Function_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 176, SQLiteParser.RULE_function_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1991;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Schema_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_schema_name;
    return this;
}

Schema_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Schema_nameContext.prototype.constructor = Schema_nameContext;

Schema_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Schema_nameContext = Schema_nameContext;

SQLiteParser.prototype.schema_name = function() {

    var localctx = new Schema_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 178, SQLiteParser.RULE_schema_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1993;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Table_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_table_name;
    return this;
}

Table_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_nameContext.prototype.constructor = Table_nameContext;

Table_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Table_nameContext = Table_nameContext;

SQLiteParser.prototype.table_name = function() {

    var localctx = new Table_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 180, SQLiteParser.RULE_table_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1995;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Table_or_index_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_table_or_index_name;
    return this;
}

Table_or_index_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_or_index_nameContext.prototype.constructor = Table_or_index_nameContext;

Table_or_index_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Table_or_index_nameContext = Table_or_index_nameContext;

SQLiteParser.prototype.table_or_index_name = function() {

    var localctx = new Table_or_index_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 182, SQLiteParser.RULE_table_or_index_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1997;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function New_table_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_new_table_name;
    return this;
}

New_table_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
New_table_nameContext.prototype.constructor = New_table_nameContext;

New_table_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.New_table_nameContext = New_table_nameContext;

SQLiteParser.prototype.new_table_name = function() {

    var localctx = new New_table_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 184, SQLiteParser.RULE_new_table_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 1999;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Column_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_column_name;
    return this;
}

Column_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Column_nameContext.prototype.constructor = Column_nameContext;

Column_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Column_nameContext = Column_nameContext;

SQLiteParser.prototype.column_name = function() {

    var localctx = new Column_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 186, SQLiteParser.RULE_column_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2001;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Collation_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_collation_name;
    return this;
}

Collation_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Collation_nameContext.prototype.constructor = Collation_nameContext;

Collation_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Collation_nameContext = Collation_nameContext;

SQLiteParser.prototype.collation_name = function() {

    var localctx = new Collation_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 188, SQLiteParser.RULE_collation_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2003;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Foreign_tableContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_foreign_table;
    return this;
}

Foreign_tableContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Foreign_tableContext.prototype.constructor = Foreign_tableContext;

Foreign_tableContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Foreign_tableContext = Foreign_tableContext;

SQLiteParser.prototype.foreign_table = function() {

    var localctx = new Foreign_tableContext(this, this._ctx, this.state);
    this.enterRule(localctx, 190, SQLiteParser.RULE_foreign_table);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2005;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Index_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_index_name;
    return this;
}

Index_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Index_nameContext.prototype.constructor = Index_nameContext;

Index_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Index_nameContext = Index_nameContext;

SQLiteParser.prototype.index_name = function() {

    var localctx = new Index_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 192, SQLiteParser.RULE_index_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2007;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Trigger_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_trigger_name;
    return this;
}

Trigger_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Trigger_nameContext.prototype.constructor = Trigger_nameContext;

Trigger_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Trigger_nameContext = Trigger_nameContext;

SQLiteParser.prototype.trigger_name = function() {

    var localctx = new Trigger_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 194, SQLiteParser.RULE_trigger_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2009;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function View_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_view_name;
    return this;
}

View_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
View_nameContext.prototype.constructor = View_nameContext;

View_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.View_nameContext = View_nameContext;

SQLiteParser.prototype.view_name = function() {

    var localctx = new View_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 196, SQLiteParser.RULE_view_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2011;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Module_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_module_name;
    return this;
}

Module_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Module_nameContext.prototype.constructor = Module_nameContext;

Module_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Module_nameContext = Module_nameContext;

SQLiteParser.prototype.module_name = function() {

    var localctx = new Module_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 198, SQLiteParser.RULE_module_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2013;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Pragma_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_pragma_name;
    return this;
}

Pragma_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Pragma_nameContext.prototype.constructor = Pragma_nameContext;

Pragma_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Pragma_nameContext = Pragma_nameContext;

SQLiteParser.prototype.pragma_name = function() {

    var localctx = new Pragma_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 200, SQLiteParser.RULE_pragma_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2015;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Savepoint_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_savepoint_name;
    return this;
}

Savepoint_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Savepoint_nameContext.prototype.constructor = Savepoint_nameContext;

Savepoint_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Savepoint_nameContext = Savepoint_nameContext;

SQLiteParser.prototype.savepoint_name = function() {

    var localctx = new Savepoint_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 202, SQLiteParser.RULE_savepoint_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2017;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Table_aliasContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_table_alias;
    return this;
}

Table_aliasContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_aliasContext.prototype.constructor = Table_aliasContext;

Table_aliasContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Table_aliasContext = Table_aliasContext;

SQLiteParser.prototype.table_alias = function() {

    var localctx = new Table_aliasContext(this, this._ctx, this.state);
    this.enterRule(localctx, 204, SQLiteParser.RULE_table_alias);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2019;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Transaction_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_transaction_name;
    return this;
}

Transaction_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Transaction_nameContext.prototype.constructor = Transaction_nameContext;

Transaction_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Transaction_nameContext = Transaction_nameContext;

SQLiteParser.prototype.transaction_name = function() {

    var localctx = new Transaction_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 206, SQLiteParser.RULE_transaction_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2021;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Window_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_window_name;
    return this;
}

Window_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Window_nameContext.prototype.constructor = Window_nameContext;

Window_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Window_nameContext = Window_nameContext;

SQLiteParser.prototype.window_name = function() {

    var localctx = new Window_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 208, SQLiteParser.RULE_window_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2023;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function AliasContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_alias;
    return this;
}

AliasContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
AliasContext.prototype.constructor = AliasContext;

AliasContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.AliasContext = AliasContext;

SQLiteParser.prototype.alias = function() {

    var localctx = new AliasContext(this, this._ctx, this.state);
    this.enterRule(localctx, 210, SQLiteParser.RULE_alias);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2025;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function FilenameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_filename;
    return this;
}

FilenameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
FilenameContext.prototype.constructor = FilenameContext;

FilenameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.FilenameContext = FilenameContext;

SQLiteParser.prototype.filename = function() {

    var localctx = new FilenameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 212, SQLiteParser.RULE_filename);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2027;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Base_window_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_base_window_name;
    return this;
}

Base_window_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Base_window_nameContext.prototype.constructor = Base_window_nameContext;

Base_window_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Base_window_nameContext = Base_window_nameContext;

SQLiteParser.prototype.base_window_name = function() {

    var localctx = new Base_window_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 214, SQLiteParser.RULE_base_window_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2029;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Simple_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_simple_func;
    return this;
}

Simple_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Simple_funcContext.prototype.constructor = Simple_funcContext;

Simple_funcContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Simple_funcContext = Simple_funcContext;

SQLiteParser.prototype.simple_func = function() {

    var localctx = new Simple_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 216, SQLiteParser.RULE_simple_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2031;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Aggregate_funcContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_aggregate_func;
    return this;
}

Aggregate_funcContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Aggregate_funcContext.prototype.constructor = Aggregate_funcContext;

Aggregate_funcContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Aggregate_funcContext = Aggregate_funcContext;

SQLiteParser.prototype.aggregate_func = function() {

    var localctx = new Aggregate_funcContext(this, this._ctx, this.state);
    this.enterRule(localctx, 218, SQLiteParser.RULE_aggregate_func);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2033;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Table_function_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_table_function_name;
    return this;
}

Table_function_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Table_function_nameContext.prototype.constructor = Table_function_nameContext;

Table_function_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};




SQLiteParser.Table_function_nameContext = Table_function_nameContext;

SQLiteParser.prototype.table_function_name = function() {

    var localctx = new Table_function_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 220, SQLiteParser.RULE_table_function_name);
    try {
        this.enterOuterAlt(localctx, 1);
        this.state = 2035;
        this.any_name();
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


function Any_nameContext(parser, parent, invokingState) {
	if(parent===undefined) {
	    parent = null;
	}
	if(invokingState===undefined || invokingState===null) {
		invokingState = -1;
	}
	antlr4.ParserRuleContext.call(this, parent, invokingState);
    this.parser = parser;
    this.ruleIndex = SQLiteParser.RULE_any_name;
    return this;
}

Any_nameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
Any_nameContext.prototype.constructor = Any_nameContext;

Any_nameContext.prototype.IDENTIFIER = function() {
    return this.getToken(SQLiteParser.IDENTIFIER, 0);
};

Any_nameContext.prototype.keyword = function() {
    return this.getTypedRuleContext(KeywordContext,0);
};

Any_nameContext.prototype.STRING_LITERAL = function() {
    return this.getToken(SQLiteParser.STRING_LITERAL, 0);
};

Any_nameContext.prototype.OPEN_PAR = function() {
    return this.getToken(SQLiteParser.OPEN_PAR, 0);
};

Any_nameContext.prototype.any_name = function() {
    return this.getTypedRuleContext(Any_nameContext,0);
};

Any_nameContext.prototype.CLOSE_PAR = function() {
    return this.getToken(SQLiteParser.CLOSE_PAR, 0);
};




SQLiteParser.Any_nameContext = Any_nameContext;

SQLiteParser.prototype.any_name = function() {

    var localctx = new Any_nameContext(this, this._ctx, this.state);
    this.enterRule(localctx, 222, SQLiteParser.RULE_any_name);
    try {
        this.state = 2044;
        this._errHandler.sync(this);
        switch(this._input.LA(1)) {
        case SQLiteParser.IDENTIFIER:
            this.enterOuterAlt(localctx, 1);
            this.state = 2037;
            this.match(SQLiteParser.IDENTIFIER);
            break;
        case SQLiteParser.ABORT:
        case SQLiteParser.ACTION:
        case SQLiteParser.ADD:
        case SQLiteParser.AFTER:
        case SQLiteParser.ALL:
        case SQLiteParser.ALTER:
        case SQLiteParser.ANALYZE:
        case SQLiteParser.AND:
        case SQLiteParser.AS:
        case SQLiteParser.ASC:
        case SQLiteParser.ATTACH:
        case SQLiteParser.AUTOINCREMENT:
        case SQLiteParser.BEFORE:
        case SQLiteParser.BEGIN:
        case SQLiteParser.BETWEEN:
        case SQLiteParser.BY:
        case SQLiteParser.CASCADE:
        case SQLiteParser.CASE:
        case SQLiteParser.CAST:
        case SQLiteParser.CHECK:
        case SQLiteParser.COLLATE:
        case SQLiteParser.COLUMN:
        case SQLiteParser.COMMIT:
        case SQLiteParser.CONFLICT:
        case SQLiteParser.CONSTRAINT:
        case SQLiteParser.CREATE:
        case SQLiteParser.CROSS:
        case SQLiteParser.CURRENT_DATE:
        case SQLiteParser.CURRENT_TIME:
        case SQLiteParser.CURRENT_TIMESTAMP:
        case SQLiteParser.DATABASE:
        case SQLiteParser.DEFAULT:
        case SQLiteParser.DEFERRABLE:
        case SQLiteParser.DEFERRED:
        case SQLiteParser.DELETE:
        case SQLiteParser.DESC:
        case SQLiteParser.DETACH:
        case SQLiteParser.DISTINCT:
        case SQLiteParser.DROP:
        case SQLiteParser.EACH:
        case SQLiteParser.ELSE:
        case SQLiteParser.END:
        case SQLiteParser.ESCAPE:
        case SQLiteParser.EXCEPT:
        case SQLiteParser.EXCLUSIVE:
        case SQLiteParser.EXISTS:
        case SQLiteParser.EXPLAIN:
        case SQLiteParser.FAIL:
        case SQLiteParser.FOR:
        case SQLiteParser.FOREIGN:
        case SQLiteParser.FROM:
        case SQLiteParser.FULL:
        case SQLiteParser.GLOB:
        case SQLiteParser.GROUP:
        case SQLiteParser.HAVING:
        case SQLiteParser.IF:
        case SQLiteParser.IGNORE:
        case SQLiteParser.IMMEDIATE:
        case SQLiteParser.IN:
        case SQLiteParser.INDEX:
        case SQLiteParser.INDEXED:
        case SQLiteParser.INITIALLY:
        case SQLiteParser.INNER:
        case SQLiteParser.INSERT:
        case SQLiteParser.INSTEAD:
        case SQLiteParser.INTERSECT:
        case SQLiteParser.INTO:
        case SQLiteParser.IS:
        case SQLiteParser.ISNULL:
        case SQLiteParser.JOIN:
        case SQLiteParser.KEY:
        case SQLiteParser.LEFT:
        case SQLiteParser.LIKE:
        case SQLiteParser.LIMIT:
        case SQLiteParser.MATCH:
        case SQLiteParser.NATURAL:
        case SQLiteParser.NO:
        case SQLiteParser.NOT:
        case SQLiteParser.NOTNULL:
        case SQLiteParser.NULL:
        case SQLiteParser.OF:
        case SQLiteParser.OFFSET:
        case SQLiteParser.ON:
        case SQLiteParser.OR:
        case SQLiteParser.ORDER:
        case SQLiteParser.OUTER:
        case SQLiteParser.PLAN:
        case SQLiteParser.PRAGMA:
        case SQLiteParser.PRIMARY:
        case SQLiteParser.QUERY:
        case SQLiteParser.RAISE:
        case SQLiteParser.RECURSIVE:
        case SQLiteParser.REFERENCES:
        case SQLiteParser.REGEXP:
        case SQLiteParser.REINDEX:
        case SQLiteParser.RELEASE:
        case SQLiteParser.RENAME:
        case SQLiteParser.REPLACE:
        case SQLiteParser.RESTRICT:
        case SQLiteParser.RIGHT:
        case SQLiteParser.ROLLBACK:
        case SQLiteParser.ROW:
        case SQLiteParser.ROWS:
        case SQLiteParser.SAVEPOINT:
        case SQLiteParser.SELECT:
        case SQLiteParser.SET:
        case SQLiteParser.TABLE:
        case SQLiteParser.TEMP:
        case SQLiteParser.TEMPORARY:
        case SQLiteParser.THEN:
        case SQLiteParser.TO:
        case SQLiteParser.TRANSACTION:
        case SQLiteParser.TRIGGER:
        case SQLiteParser.UNION:
        case SQLiteParser.UNIQUE:
        case SQLiteParser.UPDATE:
        case SQLiteParser.USING:
        case SQLiteParser.VACUUM:
        case SQLiteParser.VALUES:
        case SQLiteParser.VIEW:
        case SQLiteParser.VIRTUAL:
        case SQLiteParser.WHEN:
        case SQLiteParser.WHERE:
        case SQLiteParser.WITH:
        case SQLiteParser.WITHOUT:
        case SQLiteParser.FIRST_VALUE:
        case SQLiteParser.OVER:
        case SQLiteParser.PARTITION:
        case SQLiteParser.RANGE:
        case SQLiteParser.PRECEDING:
        case SQLiteParser.UNBOUNDED:
        case SQLiteParser.CURRENT:
        case SQLiteParser.FOLLOWING:
        case SQLiteParser.CUME_DIST:
        case SQLiteParser.DENSE_RANK:
        case SQLiteParser.LAG:
        case SQLiteParser.LAST_VALUE:
        case SQLiteParser.LEAD:
        case SQLiteParser.NTH_VALUE:
        case SQLiteParser.NTILE:
        case SQLiteParser.PERCENT_RANK:
        case SQLiteParser.RANK:
        case SQLiteParser.ROW_NUMBER:
        case SQLiteParser.GENERATED:
        case SQLiteParser.ALWAYS:
        case SQLiteParser.STORED:
        case SQLiteParser.TRUE:
        case SQLiteParser.FALSE:
        case SQLiteParser.WINDOW:
        case SQLiteParser.NULLS:
        case SQLiteParser.FIRST:
        case SQLiteParser.LAST:
        case SQLiteParser.FILTER:
        case SQLiteParser.GROUPS:
        case SQLiteParser.EXCLUDE:
            this.enterOuterAlt(localctx, 2);
            this.state = 2038;
            this.keyword();
            break;
        case SQLiteParser.STRING_LITERAL:
            this.enterOuterAlt(localctx, 3);
            this.state = 2039;
            this.match(SQLiteParser.STRING_LITERAL);
            break;
        case SQLiteParser.OPEN_PAR:
            this.enterOuterAlt(localctx, 4);
            this.state = 2040;
            this.match(SQLiteParser.OPEN_PAR);
            this.state = 2041;
            this.any_name();
            this.state = 2042;
            this.match(SQLiteParser.CLOSE_PAR);
            break;
        default:
            throw new antlr4.error.NoViableAltException(this);
        }
    } catch (re) {
    	if(re instanceof antlr4.error.RecognitionException) {
	        localctx.exception = re;
	        this._errHandler.reportError(this, re);
	        this._errHandler.recover(this, re);
	    } else {
	    	throw re;
	    }
    } finally {
        this.exitRule();
    }
    return localctx;
};


SQLiteParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {
	switch(ruleIndex) {
	case 33:
			return this.expr_sempred(localctx, predIndex);
    default:
        throw "No predicate with index:" + ruleIndex;
   }
};

SQLiteParser.prototype.expr_sempred = function(localctx, predIndex) {
	switch(predIndex) {
		case 0:
			return this.precpred(this._ctx, 20);
		case 1:
			return this.precpred(this._ctx, 19);
		case 2:
			return this.precpred(this._ctx, 18);
		case 3:
			return this.precpred(this._ctx, 17);
		case 4:
			return this.precpred(this._ctx, 16);
		case 5:
			return this.precpred(this._ctx, 15);
		case 6:
			return this.precpred(this._ctx, 14);
		case 7:
			return this.precpred(this._ctx, 13);
		case 8:
			return this.precpred(this._ctx, 6);
		case 9:
			return this.precpred(this._ctx, 5);
		case 10:
			return this.precpred(this._ctx, 9);
		case 11:
			return this.precpred(this._ctx, 8);
		case 12:
			return this.precpred(this._ctx, 7);
		case 13:
			return this.precpred(this._ctx, 4);
		default:
			throw "No predicate with index:" + predIndex;
	}
};


exports.SQLiteParser = SQLiteParser;
